map按value值降序排序,并返回指定大小的map
/**
* 降序排序并返回指定长度
* @param map 需要排序的map
* @param count 新map大小
* @return 新map
*/
public static Map sort(Map map, Integer count){
Map newMap = new HashMap();
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
// 根据entryset中value的值,对ArrayList中的entryset进行排序
Collections.sort(list, (o1, o2) -> {
// 降序排序
return o2.getValue().compareTo(o1.getValue());
});
if(list.size()>count){
list = list.subList(0,count);
}
//用迭代器对list中的元素遍历
Iterator<Map.Entry<Integer, Integer>> iterator = list.iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, Integer> entry = iterator.next();
Integer key = entry.getKey();
Integer value = entry.getValue();
newMap.put(key,value);
}
return newMap;
}