java 一个list过滤另一个list
时间: 2023-09-08 11:07:58 浏览: 226
可以使用Java的Stream API来过滤一个List中的元素,使其不包含另一个List中已存在的元素。根据提供的引用内容,有三种方法可以实现这个功能。
第一种方法是使用Stream的filter()方法和contains()方法来过滤元素。首先,使用filter()方法筛选出在list1中不存在的元素,然后使用collect()方法将筛选后的元素收集到一个新的List中。最后,使用addAll()方法将新的List添加到list1中。具体代码如下所示:
```
List<SysUser> diff = list2.stream()
.filter(user2 -> !list1.stream()
.map(user1 -> user1.getUserName())
.collect(Collectors.joining())
.contains(user2.getUserName()))
.collect(Collectors.toList());
list1.addAll(diff);
```
\[1\]
第二种方法是使用Stream的filter()方法和双重循环来过滤元素。首先,使用filter()方法根据指定的条件过滤出在list2中已存在的元素。然后,使用collect()方法将过滤后的元素收集到一个新的List中。具体代码如下所示:
```
List<User> resList = list1.stream()
.filter(u -> {
for (User user : list2) {
if (u.getName().equals(user.getName())) {
return false;
}
}
return true;
})
.collect(Collectors.toList());
```
\[2\]
第三种方法是使用双重循环来比较两个List中的元素。首先,将list1复制到一个新的List中,以便在循环过程中可以修改list1。然后,使用双重循环比较list2中的每个元素是否存在于list1中。如果不存在,则将该元素添加到list1中。具体代码如下所示:
```
List<SysUser> list1_ = new ArrayList<>();
list1_.addAll(list1);
for (SysUser user2 : list2) {
int i = 0;
for (; i < list1_.size(); i++) {
if (user2.getUserName().equals(list1_.get(i).getUserName())) {
break;
}
}
if (i >= list1_.size()) {
list1.add(user2);
}
}
```
\[3\]
以上是三种常见的方法来过滤一个List中的元素,使其不包含另一个List中已存在的元素。具体使用哪种方法取决于你的需求和代码结构。
#### 引用[.reference_title]
- *1* *3* [怎么从一个list中筛选出另一个list中没有的对象](https://blog.csdn.net/qq_38766930/article/details/126514548)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Java 一个List泛型根据另一个List泛型的属性进行过滤](https://blog.csdn.net/corleone_4ever/article/details/105092617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文