给HashMap排序,使之成为有序Map
来源:互联网 发布:梦幻古龙修改同伴数据 编辑:程序博客网 时间:2024/06/05 17:05
转载自http://www.cnblogs.com/flyfeifei66/p/3995468.html 作者:赵举飞
如何给HashMap中的值排序?这个问题很多人都遇到过,很常见的一个方案是使用LinkedHashMap,因为LinkedHashMap可以记住元素放入的顺序,可以认为是真正的“有序”(想让HashMap有序是不可能的),我比较喜欢。然而问题是往往数据已经封装在了HashMap中,我们必须手动的排序后再放入LinkedHashMap,这当然也就成了思路,代码实现起来也很简单,写出来看起来还挺舒服的,顺手记一下:
Map<String,String> myMapTmp = XXDao().getXXX(); Map<String,String> myMap = new LinkedHashMap<String,String>(); List<String> keyList = new ArrayList<String>(); Iterator<String> it =myMapTmp.keySet().iterator(); while(it.hasNext()){ keyList.add(it.next()); } Collections.sort(keyList); Iterator<String> it2 = keyList.iterator(); while(it2.hasNext()){ String key = it2.next(); myMap.put(key, myMapTmp.get(key)); }
值得注意的是Collections.sort()方法,API上的解释是:根据元素的自然顺序对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。我已经测试过String类型是可以直接使用这个接口的,如果你的list中元素是自定义的,那么就要自己实现Comparable,自己编写比较器了。
说了这么多,正文其实是在这里,在用ibatis的queryForMap是查出的结果是无序的,即便是sql中有orderby,即便是ibatis文件中指定了返回值类型(有序类型,如TreeMap,LinkedHashMap),ibatis对数据的填充到底是怎么弄的,我也不清楚,所以才只能在内存中排序,也不失是一种办法,同时抛砖引玉,看看有没有大侠给说说有没有其他办法。
- 给HashMap排序,使之成为有序Map
- 给HashMap排序,使之成为有序Map
- Treemap 有序的hashmap。用于排序
- 认识Map之HashMap
- 【Java】Map之HashMap
- 集合框架 Map之HashMap
- Map之HashMap源码分析
- Map之hashmap源码分析
- 给map集合字母排序
- Map ,HashMap , TreeMap , TreeMap 默认排序
- Map ,HashMap , TreeMap , TreeMap 默认排序
- Map排序及HashMap按键排序和按值排序
- map排序,根据key给map排序,根据value给map排序
- question_020-JAVA之Map之HashMap嵌套HashMap
- Map 之排序
- Java Map集合之HashMap、HashTable
- 多线程之Map:Hashtable HashMap 以及ConcurrentHashMap
- java Map集合框架之HashMap
- swipebox——一款点击小图浏览大图的jquery插件
- Maven使用攻略
- JAVA泛型的简单思考
- UWA两周年福利帖 | 给你一个暑“价”,回归小清新的性能!
- eclipse中vm文件样式修改
- 给HashMap排序,使之成为有序Map
- Tomcat源码解析(4)
- C语言32个关键字_goto
- js Object对象
- APP API如何维护多个版本
- spring(五)(Advisor与AspectJ)
- LODOP
- 流
- matlab图像处理函数大全