lamdba 集合去重
时间: 2024-07-30 18:00:33 浏览: 50
Lambda 表达式在编程中通常用于创建匿名函数,它们在处理集合时非常有用,特别是在对列表或集合进行过滤、映射或排序操作时,尤其是当需要临时定义简单功能时。关于去重,Lambda 表达式可以配合 Java 8 引入的 Stream API 来实现高效地去重。
例如,如果你想从一个 List 中去除重复的元素,你可以这样做:
```java
List<String> list = Arrays.asList("a", "b", "c", "a", "d", "b");
list = list.stream()
.distinct() // 使用 Lambda 表达式调用 distinct() 函数,自动去重
.collect(Collectors.toList());
```
在这个例子中,`distinct()` 方法接受一个 Lambda 表达式作为参数,该表达式定义了一个谓词(predicate),用来判断元素是否重复。由于没有显式定义谓词,`distinct()` 默认使用每个元素本身的引用进行比较,即值相等的两个元素被视为重复。
如果你需要自定义去重规则,比如基于某个属性的值去重,你可以提供一个匿名函数:
```java
Map<String, String> map = list.stream()
.collect(Collectors.toMap(
Function.identity(), // 第一个参数为键的提取函数,这里直接使用元素本身
value -> value, // 第二个参数为值的提取函数,也可以根据需求定制去重依据
(oldValue, newValue) -> oldValue // 处理冲突的策略,这里默认保留第一个值
));
```
阅读全文