treeMap 用value排序
时间: 2023-10-09 13:15:05 浏览: 83
要对 TreeMap 的 value 进行排序,您可以使用 Java 8 中的 Stream API 和 lambda 表达式来实现。具体步骤如下:
1. 将 TreeMap 的 entrySet 转换为一个 Stream,使用 map() 方法将每个 Entry 对象转换为一个新的对象,其中包含 key 和 value 两个属性。
2. 调用 sorted() 方法对这些对象进行排序,可以使用 Comparator 来指定排序规则。例如,可以使用按照 value 从小到大排序的比较器:
```java
Comparator<Entry<K, V>> valueComparator = (entry1, entry2) ->
entry1.getValue().compareTo(entry2.getValue());
```
3. 最后,使用 collect() 方法将排序后的对象转换回 TreeMap。
将上述步骤组合起来,代码如下:
```java
Map<K, V> sortedMap = treeMap.entrySet().stream()
.map(entry -> new AbstractMap.SimpleEntry<>(entry.getKey(), entry.getValue()))
.sorted((entry1, entry2) -> entry1.getValue().compareTo(entry2.getValue()))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
TreeMap::new));
```
在上面的代码中,sortedMap 就是按照 value 排序后的 TreeMap。注意,如果 TreeMap 中有多个 value 相等的 entry,使用 toMap() 方法时需要指定合并函数,否则会抛出 IllegalStateException 异常。
阅读全文