msww.net
当前位置:首页 >> HAshmAp在输出时怎么排序 >>

HAshmAp在输出时怎么排序

hashmap() 是无序的.如果在有序,建议用 LinkedHashMap, TreeMap. LinkedHashMap好像是按输入顺序输出,而 TreeMap 则是按Key 的顺序输出.如果你的“george,henry,billy,harry”是value ,则用上面那两个吧,排序后输出就行了,如果用hashmap是行不通的 再看看别人怎么说的.

Map<String, String> maps = new LinkedHashMap<String, String>();

HashMap的无序是指不会记录插入的顺序,也不会根据特定规则进行排序;但是HashMap存值的时候会根据key的hashCode()来计算存储的位置(位置是散列的,所以说其无序);你使用的key是String类型,String重写的hashCode()计算出的位置,遍历的时候恰好是"001","003","005"的顺序;PS:你可以打印一下"001","003","005"的hashCode()再对16求个余数,然后再往里面加一个"011"和"012"再打印一下;

TreeMap的话自身就是有序的,只要实现了Comparable接口向map中添加元素,TreeMap会自动排序.具体顺序根据你的Comparable接口的实现而定.HashMap是无序的也没办法进行排序.

既然用到了HashMap也就不需要元素的加入顺序了hashmap是通过元素名来取得元素值的,如若非要加个顺序的话那就把元素名从1开始命名然后按照顺序取就是了不过麻烦在于移除了某个数值后不能的到连续的数值顺序了

map本身是无序的,如果你非想要按顺序输出,你只能在放入的时候把key做成一定有规律的,到时候取的时候按这个来取

final entry removeentryforkey(object key) { int hash = (key == null) ? 0 : hash(key.hashcode()); int i = indexfor(hash, table.length); entry prev = table[i]; entry e = prev; while (e != null) { entry next = e.next; object k; if (e.hash == hash && ((k = e.key) == key

1,如果是只针对key排序,完全不考虑value顺序,则排序如下:Map<String, Integer> map = new HashMap<String, Integer>(); map.put("2015-06-10", 3); map.put("2015-06-09", 2); map.put("2015-06-08", 1); map.put("2015-06-11", 4);

TreeMap的顺序是自然顺序(如整数从小到大),也可以指定比较函数.但不是插入的顺序. 用LinkedHashMap吧.它内部有一个链表,保持插入的顺序.迭代的时候,也是按照插入顺序迭代,而且迭代比HashMap快.

是自己做这个算法么,还是要用到java的数据结构,因为hashmap是无序的,Treemap是有序的,但是他们排序不是看value是看key的,是必须这样做么,因为我想如果你用hashMap你是用key来访问里面value的,排不排序意义不大,我建议用TreeSet排序,如果你需要用name就直接遍历set的时候取name就完了,如果不想改变原来的类的结构,就用list加comparator做,如果还是要用map就把排好序的set或list以name为key再放到map里

网站首页 | 网站地图
All rights reserved Powered by www.msww.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com