根据某个字段去重并返回集合 使用stream 流
时间: 2023-08-12 09:27:04 浏览: 127
集合Stream方法简单使用方法
可以使用Java 8的Stream API中的distinct()方法来根据某个字段去重并返回集合,具体的代码示例如下:
假设有一个List<Person>类型的集合,其中Person类有name和age两个字段,我们想要根据name字段去重并返回一个Set<String>类型的集合,可以使用以下代码:
```java
List<Person> personList = ...
Set<String> nameSet = personList.stream()
.map(Person::getName)
.distinct()
.collect(Collectors.toSet());
```
其中,map()方法将Person对象映射为其name字段,distinct()方法根据name字段去重,最后使用collect()方法将结果收集为Set<String>类型的集合。
需要注意的是,如果要根据多个字段去重,可以使用distinct()方法的重载版本,传入一个自定义的比较器。比如,如果想要根据name和age字段去重,可以使用以下代码:
```java
List<Person> personList = ...
Set<Person> distinctPersons = personList.stream()
.distinct(Comparator.comparing(Person::getName)
.thenComparing(Person::getAge))
.collect(Collectors.toSet());
```
其中,distinct()方法传入了一个自定义的比较器,先按照name字段比较,再按照age字段比较。最后得到的是一个Set<Person>类型的集合。
阅读全文