java8对象集合去重根据某一字段并合为新的listString
可以使用Java 8的Stream API来实现对象集合的去重和合并操作。首先,需要创建一个新的类来表示对象集合中的元素,并重写该类的equals()和hashCode()方法,以便进行对象的去重操作。
假设我们有一个Person类,其中有name和age两个字段:
public class Person {
private String name;
private int age;
// constructors, getters, setters, etc.
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
然后,我们可以使用Stream API来对对象集合进行去重和合并操作,根据name字段进行去重,并将去重后的结果合并为一个新的List<String>:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 25));
persons.add(new Person("Bob", 30));
persons.add(new Person("Alice", 25));
persons.add(new Person("Charlie", 35));
List<String> uniqueNames = persons.stream()
.map(Person::getName)
.distinct()
.collect(Collectors.toList());
System.out.println(uniqueNames);
}
}
运行以上代码,输出结果为:[Alice, Bob, Charlie]。
在上述代码中,我们使用了persons.stream()方法将List转换为Stream对象,然后使用map()方法将Person对象映射为name字段的值,接着使用distinct()方法对name字段进行去重操作,最后使用collect(Collectors.toList())方法将去重后的结果收集到一个新的List中。
这样,我们就可以根据某一字段对对象集合进行去重,并将去重后的结果合并为一个新的List
原文地址: https://www.cveoy.top/t/topic/ixcc 著作权归作者所有。请勿转载和采集!