java stream 流实现两个List<User> 过滤掉 name和age都相同的数据
时间: 2024-04-13 16:29:13 浏览: 175
要使用Java Stream流过滤掉两个List<User>中name和age都相同的数据,可以使用filter和noneMatch方法来实现。下面是一个示例代码:
```java
List<User> list1 = new ArrayList<>(); // 第一个List<User>
List<User> list2 = new ArrayList<>(); // 第二个List<User>
// 假设已经将数据添加到list1和list2中
List<User> filteredList = list1.stream()
.filter(user1 -> list2.stream()
.noneMatch(user2 -> user2.getName().equals(user1.getName()) && user2.getAge() == user1.getAge()))
.collect(Collectors.toList());
```
上述代码使用Java Stream流的filter方法对第一个List<User>进行过滤操作。在filter方法中,使用noneMatch方法对第二个List<User>进行遍历匹配,判断name和age是否都相同。
如果在第二个List<User>中没有找到与第一个List<User>中name和age都相同的数据,那么就保留该数据。最后使用collect(Collectors.toList())将过滤后的数据收集到一个新的List中。
这样,filteredList就是过滤掉name和age都相同的数据后的结果列表。
希望对您有所帮助!如果还有其他问题,请随时提问。
阅读全文