java 根据list实体类中的某个字段去重
时间: 2023-10-23 20:14:41 浏览: 206
List对象去重和按照某个字段排序的实现方法
可以使用Java 8中的Stream API和Lambda表达式来对List中的实体类进行去重。假设我们有一个实体类Person,其中包含id和name字段,我们要根据name字段进行去重。
代码如下:
```
List<Person> persons = // 假设已经初始化
List<Person> distinctPersons = persons.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new));
```
上述代码中,使用了collectingAndThen方法,先将List转换成TreeSet,根据name字段进行去重,然后再将TreeSet转换成List。
需要注意的是,使用TreeSet去重的前提是Person类需要实现Comparable接口或者提供Comparator对象,用于比较两个Person对象的大小。上述示例代码中,使用了Comparator.comparing方法,根据Person的name字段进行比较。如果Person类没有实现Comparable接口,也没有提供Comparator对象,则在使用TreeSet时会抛出ClassCastException异常。
阅读全文