使用Java 8中的Stream API可以实现根据两个属性拼合在一起取两个对象集合的差集。下面是一个示例代码:\n\njava\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.stream.Collectors;\n\npublic class Main {\n public static void main(String[] args) {\n // 创建对象集合1\n List<Person> list1 = new ArrayList<>();\n list1.add(new Person("Alice", 25));\n list1.add(new Person("Bob", 30));\n list1.add(new Person("Charlie", 35));\n\n // 创建对象集合2\n List<Person> list2 = new ArrayList<>();\n list2.add(new Person("Alice", 25));\n list2.add(new Person("Bob", 35));\n list2.add(new Person("David", 40));\n\n // 根据两个属性拼合在一起取两个对象集合的差集\n List<Person> difference = list1.stream()\n .filter(p1 -> list2.stream()\n .noneMatch(p2 -> p2.getName().equals(p1.getName()) && p2.getAge() == p1.getAge()))\n .collect(Collectors.toList());\n\n // 打印差集\n difference.forEach(System.out::println);\n }\n}\n\nclass Person {\n private String name;\n private int age;\n\n public Person(String name, int age) {\n this.name = name;\n this.age = age;\n }\n\n public String getName() {\n return name;\n }\n\n public int getAge() {\n return age;\n }\n\n @Override\n public String toString() {\n return "Person [name=" + name + ", age=" + age + "]";\n }\n}\n\n\n在这个示例中,我们创建了两个Person对象集合list1和list2,然后使用Stream API进行操作。首先使用filter()方法过滤出在list1中不在list2中的对象,然后使用collect()方法将结果收集到一个新的集合中。最后,我们使用forEach()方法打印差集中的每个对象。\n\n输出结果为:\n\nPerson [name=Charlie, age=35]\n

Java 8 使用 Stream API 获取两个对象集合的差集 - 根据两个属性拼合

原文地址: https://www.cveoy.top/t/topic/ptxQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录