给HashMap排序,使之成为有序Map
来源:互联网 发布:淘宝上如何免费开网店 编辑:程序博客网 时间:2024/06/05 09:07
如何给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 = groupidList.iterator(); while(it2.hasNext()){ String key = it2.next(); attrOfBisGroups.put(key, myMap.get(key)); }
值得注意的是Collections.sort()方法,API上的解释是:根据元素的自然顺序对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。我已经测试过String类型是可以直接使用这个接口的,如果你的list中元素是自定义的,那么就要自己实现Comparable,自己编写比较器了。
说了这么多,正文其实是在这里,在用ibatis的queryForMap是查出的结果是无序的,即便是sql中有orderby,即便是ibatis文件中指定了返回值类型(有序类型,如TreeMap,LinkedHashMap),ibatis对数据的填充到底是怎么弄的,我也不清楚,所以才只能在内存中排序,也不失是一种办法,同时抛砖引玉,看看有没有大侠给说说有没有其他办法。
0 0
- 给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
- 关于加密软件识别电脑唯一性的方式总结
- jquery的使用注意点以及建议
- 类和型的区别
- 关于LBS和室内导航
- 常见模式识别算法
- 给HashMap排序,使之成为有序Map
- action传值方式
- 黑马程序员--Object-C 对象的特性
- 黑马程序员--Object-C 类别
- 什么是元类
- JbibbLDA使用。
- Android之解析json数据
- 很多道理并不是一定都有道理
- 云计算模式下的生态变化(杂谈2)