关于HashMap的排序 自己重载数据接口的sort,用二分法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HashMap本身并不适合排序,也就是说如果你要排序的话,最好不要用HashMap~~如果要用,可以从HashMap中得到Collection来排序~~ 首先你要明白自己的排序需不需要稳定排序另外有一个SortedMap,我也没用过,你可以看看java API文档我相信使用它会比排序更高效,它应该是插入元素时按顺序插入 Map是别人传过来的,我可以转化给set或者Collection,但是我不知道怎么对set进行排序.... 稳定排序 是什么?我看看SortedMap先. 最简单的就用Map new_map = new TreeMap(now_map);就已经排好序了 treeMap按自然顺序,如果你按它默认的构造方法构造的话。LinkedHashMap是按你加入的顺序。另外:如果你要记录map加入的顺序,配合LinkedList使用。把标识放到list里!!!取的时候按list的顺序从map里取~~~~ 取出Key的集合,然后调用Arrays.sort() Map mapModifyied = getMap(); Object[] key = mapModified.keySet().toArray(); Arrays.sort(key); 这样经过了两次转换:Map --> Set , Set --> Object[], 是不是很浪费? 实现Comparable后,在插入元素时,已经按照Comparable排序了,迭代取出元素有什么问题? 你们说的Comparable是什么意思?我看了好长时间也没搞清楚,听说他可以自己规定比较方法,但是怎么用啊? 实践结果: HashMap map = new HashMap(); map.put("1", "1"); map.put("3", "3"); map.put("2", "2"); map.put("4", "4"); Iterator iterator = map.keySet().iterator(); while(iterator.hasNext()){ Object key = iterator.next(); Object obj = map.get(key); System.out.println(obj); } System.out.println("---------------------------"); Object[] key = map.keySet().toArray(); Arrays.sort(key); for (int i = 0; i < key.length; i++) { System.out.println(map.get(key[i])); } 运行上面的程序后打印的结果是3241---------------------------1234明显,加入的在hashmap里的排序跟key对象的Comparable没有任何关系. 想彻底的学好JAVA,大家帮帮忙 精简jre 联通短消息的编码 在设置自定义标签里面设置标签属性第一个字母不能是大写吗? jtable新插入一行,如何让屏幕滚动到这条 !!!关于控制台下字符串怎么输出才会有规定的格式??!!!!!!! 请看过core java的朋友指点一下,谢谢! jdk1.4使用问题(在线等待) 怪怪问题,请看。 SCJP终于考完了,提前9分钟交卷,终于过了! 一个报表设计器GUI界面初步探索(欢迎大家来讨论) 如何读取一个全是int的文件?
我可以转化给set或者Collection,
但是我不知道怎么对set进行排序....
我看看SortedMap先.
Map new_map = new TreeMap(now_map);
就已经排好序了
LinkedHashMap是按你加入的顺序。
另外:
如果你要记录map加入的顺序,配合LinkedList使用。
把标识放到list里!!!
取的时候按list的顺序从
map里取~~~~
Object[] key = mapModified.keySet().toArray();
Arrays.sort(key);
这样经过了两次转换:Map --> Set , Set --> Object[],
是不是很浪费?
我看了好长时间也没搞清楚,听说他可以自己规定比较方法,
但是怎么用啊?
map.put("1", "1");
map.put("3", "3");
map.put("2", "2");
map.put("4", "4"); Iterator iterator = map.keySet().iterator(); while(iterator.hasNext()){
Object key = iterator.next();
Object obj = map.get(key);
System.out.println(obj); } System.out.println("---------------------------"); Object[] key = map.keySet().toArray();
Arrays.sort(key); for (int i = 0; i < key.length; i++) {
System.out.println(map.get(key[i]));
}
运行上面的程序后打印的结果是
3241---------------------------1234明显,加入的在hashmap里的排序跟key对象的Comparable没有任何关系.