java8对象集合去重根据某一字段并合为新的listString使用treeSet
可以使用Java 8的stream和lambda表达式来实现对象集合的去重和根据某一字段合并为新的List
假设我们有一个Person类,拥有name和age两个字段,现在有一个List
首先,我们需要定义Person类:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
然后,我们可以使用stream和lambda表达式进行操作:
List<Person> personList = new ArrayList<>();
// 假设已经将数据添加到personList中
List<String> distinctNames = personList.stream()
.map(Person::getName) // 只保留name字段
.distinct() // 去重
.collect(Collectors.toCollection(TreeSet::new)); // 使用TreeSet保持结果有序
System.out.println(distinctNames);
运行结果将会是一个有序的去重后的name列表。
注意,使用TreeSet来保持结果有序只能保证元素按照自然排序或者指定的Comparator排序,而不能保证原来的顺序。如果要保留原始的顺序,可以使用LinkedHashSet来替代TreeSet
原文地址: https://www.cveoy.top/t/topic/ixcg 著作权归作者所有。请勿转载和采集!