工作中遇到的一个问题,需要对HashMap<String,Integer> uniqueProductMap
中元素按照value的值从大到小排序,这个问题的解决思路是将 uniqueProductMap中的元素放到一个List中,然后重写collections的sort函数,最后读这个uniqueProductMap
也是有讲究的,如下代码:
List<Map.Entry<String, Integer>> infoIds =
new ArrayList<Map.Entry<String, Integer>>(uniqueProductMap.entrySet());
//排序 从大到小
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
int o1Val= o1.getValue();
int o2Val= o2.getValue();
if(o1Val<o2Val){
return 1;
}else if(o1Val>o2Val){
return -1;
}
return 0;
}
});
Vector<String> vecstr = new Vector();
for (Map.Entry<String, Integer> entry : infoIds) {
String mapkey = (String)entry.getKey();
int mapval = (Integer)entry.getValue();
vecstr.add(mapkey);
vecstr.add(String.valueOf(mapval));
if(vecstr.size() >= 200){
break;
}
}