如何给HashMap中的值排序?这个问题很多人都遇到过,很常见的一个方案是使用LinkedHashMap,因为LinkedHashMap可以记住元素放入的顺序,可以认为是真正的“有序”(想让HashMap有序是不可能的),我比较喜欢。然而问题是往往数据已经封装在了HashMap中,我们必须手动的排序后再放入LinkedHashMap,这当然也就成了思路,代码实现起来也很简单,写出来看起来还挺舒服的,顺手记一下:
Map myMapTmp = XXDao().getXXX();
Map myMap = new LinkedHashMap();
List keyList = new ArrayList();
Iterator it =myMapTmp.keySet().iterator();
while(it.hasNext()){
keyList.add(it.next());
}
Collections.sort(keyList);
Iterator it2 = keyList.iterator();
while(it2.hasNext()){
String key = it2.next();
myMap.put(key, myMapTmp.get(key));
}
值得注意的是Collections.sort()方法,API上的解释是:根据元素的自然顺序对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo