用java对 HashMap<String, Integer> scores = new HashMap<>(); scores.put("Page2", 80); scores.put("Page4", 90); scores.put("Page10", 85); scores.put("Page9", 70); 按键进行降序排序
时间: 2024-02-06 15:02:32 浏览: 84
Java 程序对数组元素进行降序排序
可以通过Java 8的Stream API来对HashMap按键进行降序排序,具体实现如下:
```
Map<String, Integer> scores = new HashMap<>();
scores.put("Page2", 80);
scores.put("Page4", 90);
scores.put("Page10", 85);
scores.put("Page9", 70);
Map<String, Integer> sortedScores = scores.entrySet()
.stream()
.sorted(Map.Entry.<String, Integer>comparingByKey().reversed())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
System.out.println(sortedScores);
```
输出结果为:
```
{Page9=70, Page4=90, Page2=80, Page10=85}
```
解释一下上述代码的实现过程:
1. 调用entrySet方法将HashMap转化为Set<Map.Entry<String, Integer>>类型的集合;
2. 调用stream方法将集合转化为Stream类型的流;
3. 调用sorted方法,传入comparingByKey方法按键进行升序排序,再调用reversed方法反转排序,即按键进行降序排序;
4. 调用collect方法将流转化为LinkedHashMap类型的Map,这里使用LinkedHashMap是为了保证排序后的顺序不变;
5. 最后输出排序后的Map。
需要注意的是,这里使用了Lambda表达式和Java 8的Stream API,需要Java 8及以上版本的支持。
阅读全文