锁定老帖子 主题:Java中Map的排序
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-02
最后修改:2011-06-02
个人认为主要还是注意ArrayList( Collection c) 这个构造方法,然后对这个List排序即可! public static void main(String[] args) { Map map = new HashMap(); map.put("First", 20); map.put("Second", 10); map.put("Third", 30); List arrayList = new ArrayList(map.entrySet()); //注意构造函数 //排序前 for(Iterator it = arrayList.iterator();it.hasNext();){ Map.Entry entry = (Map.Entry)it.next(); System.out.print(entry.getKey()+":"+entry.getValue()+" "); } Collections.sort(arrayList, new TariffComparator.TariffMapComparator()); System.out.println(); //排序后 for(Iterator it = arrayList.iterator();it.hasNext();){ Map.Entry entry = (Map.Entry)it.next(); System.out.println(entry.getKey()+":"+entry.getValue()); } } 排序方法: public class TariffComparator { public static class TariffMapComparator implements Comparator{ public int compare(Object o1, Object o2) { Map.Entry obj1 = (Map.Entry)o1; Map.Entry obj2 = (Map.Entry)o2; return obj1.getValue().toString().compareTo(obj2.getValue().toString()); } } } 结果: ... 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-06-02
TreeMap有构造方法public TreeMap(Comparator<? super K> comparator),可以直接实现排序
|
|
返回顶楼 | |
发表时间:2011-06-03
HashMap本就是无序的,想怎样?
不怕新手贴啊 |
|
返回顶楼 | |
发表时间:2011-06-03
TreeMap 实现红黑树算法 还有其并发版本ConcurrentSkipListMap 使用跳跃表 应该都是Java底层中使用的非常困难的数据结构 如果能够原生实现一个(不借助于系统像Collections中的静态方法)使用简单的数据结构 还能保持高效 就可以赞一个
|
|
返回顶楼 | |
发表时间:2011-06-03
论坛是做的不错。,被评为新手帖也是木有办法的事。很无奈呀,有木有,有木有!
|
|
返回顶楼 | |
发表时间:2011-06-03
Map本来主要功能就不是为了遍历,所谓排序其实不是那么重要的,话说java.util.Collections#sort()方法的性能很差啊,特别当List的元素非常多的时候……其效率差到可以啊,记得有一次才几百条数据,整个方法居然用了近2秒,去掉排序就只用了不到200毫秒了………悲剧啊!
|
|
返回顶楼 | |
发表时间:2011-06-03
对高手说是新手帖,对菜鸟说经验帖,有木有?有木有?
|
|
返回顶楼 | |
发表时间:2011-06-03
基本概念没搞清楚啊
你仔细看看你的排序,其实是在对ArrayList的对象在排序,哪是在对Map排序啊。 而且你如果要自定义排序方式,应该用TreeMap,而不是HashMap。 几种map的区别,例子很多。 引用 HashMap,LinkedHashMap,TreeMap都属于Map Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。 HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。 LinkedHashMap LinkedHashMap也是一个HashMap,但是内部维持了一个双向链表,可以保持顺序 TreeMap 不仅可以保持顺序,而且可以用于排序 http://www.cnblogs.com/modou/articles/1345995.html |
|
返回顶楼 | |
发表时间:2011-06-03
传说
SET是排序的 MAP是哈希的 LIST是序列的 |
|
返回顶楼 | |
发表时间:2011-06-03
jackra 写道 传说
SET是排序的 MAP是哈希的 LIST是序列的 无语!!! |
|
返回顶楼 | |