代码如下:
@Test
public void xxx(){
HashMap<String, Integer> map = new HashMap<>();
map.put("xxx10",12);
map.put("xxx2",10);
map.put("xxxq",3);
map.put("xxxx",41);
System.out.println(map);
HashMap<String,Integer> sortHashMap = sortHashMap(map);
System.out.println(sortHashMap);
}
public static HashMap<String,Integer> sortHashMap(HashMap<String,Integer> map) {
// 首先拿到map 的键值对集合
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
// 将set 集合转为List 集合,为什么,为了使用工具类的排序方法
List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(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) {
return o2.getValue() - o1.getValue();
}
});
//创建一个新的有序的HashMap 子类的集合
LinkedHashMap<String,Integer> linkedHashMap = new LinkedHashMap<String,Integer>();
//将List 中的数据存储在LinkedHashMap 中
for(Map.Entry<String,Integer> entry : list){
linkedHashMap.put(entry.getKey(), entry.getValue());
}
//返回结果
return linkedHashMap;
}
结果: 根据v的值进行排序