根据list其中一个属性去重stream
时间: 2024-10-25 14:08:11 浏览: 10
在Java中,你可以使用`Stream` API 的 `distinct()` 或者 `collect(Collectors.toSet())` 方法来根据列表的一个属性去除重复元素。这里是一个例子,假设我们有一个包含Person对象的List,每个Person有一个名为"name"的属性:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Person {
String name;
// 构造函数、getter和setter省略...
}
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
// 假设填充了一些person对象...
// 使用 Stream 的 distinct() 方法,根据name属性去重
List<Person> uniquePeopleByName = people.stream()
.distinct(Comparator.comparing(Person::getName))
.collect(Collectors.toList());
// 或者先转换成Set,再转回List
List<Person> uniquePeopleByNameSet = people.stream()
.collect(Collectors.toCollection(HashSet::new)) // 创建HashSet避免重复
.stream()
.collect(Collectors.toList());
}
}
```
在这个例子中,`Comparator.comparing(Person::getName)`用于提供比较规则,告诉流如何去比较Person对象的name属性。`distinct()`会返回一个新的流,其中所有重复的对象都被移除。
阅读全文