lambda Collectors.toMap防止重复
时间: 2024-09-10 17:00:34 浏览: 48
Lambda表达式.pdf
lambda表达式配合`Collectors.toMap()`是Java 8中引入的流(Stream)API的一部分,它允许开发者以函数式的方式快速收集数据到一个Map中。`Collectors.toMap()`方法接受两个参数:键映射函数和值映射函数。如果键映射函数对于多个元素返回相同的键,将会导致键重复,这时可以使用第三个参数来解决冲突,这个参数是一个BinaryOperator,用于定义键冲突时的合并策略。
例如,如果你想要根据某个属性将一组对象收集到一个Map中,而这个属性可能会有重复值,你可以这样做:
```java
Map<String, Object> map = list.stream()
.collect(Collectors.toMap(
item -> item.getSomeProperty(), // 键映射函数
item -> item, // 值映射函数
(existing, replacement) -> existing)); // 键冲突的合并策略
```
在上面的例子中,如果两个元素通过`getSomeProperty()`返回了相同的键值,那么通过`(existing, replacement) -> existing`这个合并策略,选择保留已存在的元素(existing),忽略新元素(replacement)。
阅读全文