List对象集合 按照对象的一个字段值进行去重
时间: 2024-05-13 11:18:41 浏览: 19
可以使用Java 8的流式API来实现按照对象的一个字段值进行去重。假设我们有一个List<Student>对象集合,其中每个Student对象包含id和name两个字段,我们想按照name字段进行去重,可以使用如下代码:
```
List<Student> students = new ArrayList<>();
// 添加一些学生对象到集合中
List<Student> distinctStudents = students.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getName))),
ArrayList::new));
```
这段代码中,我们使用了Stream的collect()方法来进行List集合的转换和去重。具体来说,我们使用了Collectors.toCollection()方法来构造一个TreeSet集合,传入一个比较器Comparator.comparing(Student::getName)表示按照name字段进行比较。然后再使用Collectors.collectingAndThen()方法将TreeSet集合转换为ArrayList集合,得到去重后的List。
需要注意的是,这种方法只会保留第一个出现的对象,如果有多个name字段相同的对象,只会保留第一个。如果需要保留最后一个,可以使用Collectors.collectingAndThen()方法的第二个参数传入LinkedList::new来构造LinkedList集合,然后再使用Collections.reverse()方法反转顺序即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)