java8通过Stream()过滤出两个list<Object>中某一属性不相同的list
时间: 2024-04-13 16:28:08 浏览: 235
要使用 Java 8 的 Stream 过滤两个 List<Object> 中某一属性不相同的对象列表,您可以按照以下步骤进行操作:
假设您有两个包含对象的 List,每个对象都有一个属性,您想要过滤出两个 List 中该属性不相同的对象列表。
首先,确保两个对象类具有相同的属性,并提供相应的 getter 方法。
然后,您可以使用 Stream 的 `filter()` 方法结合 Lambda 表达式来进行过滤,并使用 `anyMatch()` 方法来判断两个 List 中是否存在具有不相同属性的对象。
以下是示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FilterObjectsExample {
public static void main(String[] args) {
// 创建两个包含对象的 List
List<Person> list1 = Arrays.asList(
new Person("John", 25),
new Person("Jane", 30),
new Person("Alice", 20)
);
List<Person> list2 = Arrays.asList(
new Person("John", 25),
new Person("Jane", 35),
new Person("Bob", 20)
);
// 过滤出两个 List 中某一属性不相同的对象列表
List<Person> filteredList = list1.stream()
.filter(person1 -> list2.stream()
.noneMatch(person2 -> person2.getName().equals(person1.getName())))
.collect(Collectors.toList());
// 输出结果
for (Person person : filteredList) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
static 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;
}
}
}
```
在上面的示例中,我们创建了两个包含 `Person` 对象的 List。使用 Stream,我们首先在第一个 List 上使用 `filter()` 方法,然后在第二个 List 上使用 `noneMatch()` 方法来判断是否存在具有不相同属性的对象。最后,我们使用 `collect()` 方法将结果收集到一个新的 List 中,并打印输出结果。
请确保在代码中替换示例的 `Person` 类以适应您的实际需求,并根据需要更改属性比较的逻辑。
阅读全文