java8根据对象的某两个属性拼合在一起取两个对象集合的差集
可以使用Java 8中的Stream API来实现根据两个属性拼合在一起取两个对象集合的差集。下面是一个示例代码:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 创建对象集合1
List<Person> list1 = new ArrayList<>();
list1.add(new Person("Alice", 25));
list1.add(new Person("Bob", 30));
list1.add(new Person("Charlie", 35));
// 创建对象集合2
List<Person> list2 = new ArrayList<>();
list2.add(new Person("Alice", 25));
list2.add(new Person("Bob", 35));
list2.add(new Person("David", 40));
// 根据两个属性拼合在一起取两个对象集合的差集
List<Person> difference = list1.stream()
.filter(p1 -> list2.stream()
.noneMatch(p2 -> p2.getName().equals(p1.getName()) && p2.getAge() == p1.getAge()))
.collect(Collectors.toList());
// 打印差集
difference.forEach(System.out::println);
}
}
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;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
在这个示例中,我们创建了两个Person对象集合list1和list2,然后使用Stream API进行操作。首先使用filter()方法过滤出在list1中不在list2中的对象,然后使用collect()方法将结果收集到一个新的集合中。最后,我们使用forEach()方法打印差集中的每个对象。
输出结果为:
Person [name=Charlie, age=35]
``
原文地址: https://www.cveoy.top/t/topic/hKtg 著作权归作者所有。请勿转载和采集!