资源说明:Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现
Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。
Map 根据 Value 排序
在 Java8 中,我们可以使用 Stream 操作对 Map 根据 Value 排序。下面是一个示例代码:
```java
Map map = new HashMap<>();
map.put("one", 0.08);
map.put("two", 0.1);
map.put("three", 0.2);
map.put("four", 0.91);
public > Map sortByValue(Map map) {
Map result = new LinkedHashMap<>();
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
return result;
}
```
在上面的代码中,我们使用 `Map.Entry.comparingByValue()` 对 Map 的 Entry 集合进行排序,并使用 `reversed()` 方法将排序结果反转,以实现降序排序。
Map 根据 Key 排序
如果我们想根据 Map 的 Key 排序,只需要将上面的工具类进行小小的修改:
```java
public , V > Map sortByKey(Map map) {
Map result = new LinkedHashMap<>();
map.entrySet().stream()
.sorted(Map.Entry.comparingByKey()
.reversed())
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
return result;
}
```
在上面的代码中,我们使用 `Map.Entry.comparingByKey()` 对 Map 的 Key 进行排序,并使用 `reversed()` 方法将排序结果反转,以实现降序排序。
升序排序
如果我们需要实现升序排序,只需要将 `reversed()` 方法去掉即可:
```java
public > Map sortByValue(Map map) {
Map result = new LinkedHashMap<>();
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
return result;
}
```
小结
Java8 中的 Stream 操作提供了一些非常简便的写法,我们还是需要多用一些。今天我们介绍了如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现,希望能够对读者有些帮助,也希望大家多多支持我们。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。