自己写的一个根据Map的值进行排序的工具类,键的值可以是各种引用类型.
public static <E> LinkedHashMap<E,Integer> sortByMapValue(Map<E,Integer> originalMap){
List<Map<E,Integer>> sortMapList=new ArrayList<>();
for (Entry<E, Integer> entry : originalMap.entrySet()) {
E key = entry.getKey();
Integer value=entry.getValue();
Map<E,Integer> orderMap = new HashMap<>();
orderMap.put(key,value);
if(sortMapList.size()==0) {
sortMapList.add(orderMap);
continue;
}
for(int i=0;i<sortMapList.size();i++) {
Integer ordreValue=Integer.valueOf(String.valueOf((sortMapList.get(i).values().toArray())[0]));
if(value>ordreValue) {
sortMapList.add(i,orderMap);
break;
}
if(i==(sortMapList.size()-1)) {
sortMapList.add(i+1,orderMap);
break;
}
}
}
LinkedHashMap<E,Integer> sortedMap=new LinkedHashMap<>();
for (Map<E, Integer> singleMap : sortMapList) {
@SuppressWarnings("unchecked")
E orderKey=(E) singleMap.keySet().toArray()[0];
sortedMap.put(orderKey,singleMap.get(orderKey));
}
return sortedMap;
}
测试实例:
public static void main(String[] args) {
Map<Integer,Integer> originalMap=new HashMap<>();
originalMap.put(11,11);
originalMap.put(22,22);
originalMap.put(33,33);
originalMap.put(44,44);
originalMap.put(55,55);
originalMap.put(66,66);
//根据map值得大小排序
LinkedHashMap<Integer, Integer> sortByMapValue = sortByMapValue(originalMap);
System.out.println(sortByMapValue);
}
输出:
{66=66, 55=55, 44=44, 33=33, 22=22, 11=11}