已知一个 HashMap<String,Integer>集合,需要对集合value进行倒序从大到小进行排序,
主要使用collections集合工具类的sort方法重写了compare方法:
代码如下:
public static LinkedHashMap<String, Integer> sortHashMap(Map<String, Integer> map) {
// 首先拿到map的键值对集合
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
// 将set集合转为List集合,为什么?为了使用工具类的排序方法
List<Map.Entry<String, Integer>> list = new ArrayList<>(entrySet);
// 使用collections集合工具类对list进行排序,排序规则使用匿名内部类来实现
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
// 按要求根据User的age的倒序进行排
return o2.getValue() - o1.getValue();
}
});
// 创建一个新的有序的HashMap子类的集合
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
// 将list中的数据存储在LinkedHashMap中
int i = 1;
for (Map.Entry<String, Integer> entry : list) {
if (i > 100) {
break;
}
linkedHashMap.put(entry.getKey(), entry.getValue());
i++;
}
// 返回结果
return linkedHashMap;
}