java 一个list根据另一个list的属性过滤
时间: 2023-09-13 20:02:36 浏览: 138
回答: 要根据一个List的属性来过滤另一个List,可以使用Java 8的Stream流来实现。首先,你需要定义一个Predicate来指定过滤条件,比如根据name属性来过滤。然后,使用Stream的filter方法来过滤List1,将满足条件的元素收集到一个新的List中。下面是一个示例代码:
```java
List<User> list1 = new ArrayList<>();
User u1 = new User();
u1.setName("u1");
u1.setAge(12);
User u2 = new User();
u2.setName("u2");
u2.setAge(13);
User u3 = new User();
u3.setName("u3");
u3.setAge(13);
list1.add(u1);
list1.add(u2);
list1.add(u3);
List<User> list2 = new ArrayList<>();
User u4 = new User();
u4.setName("u3");
u4.setAge(13);
User u5 = new User();
u5.setName("u4");
u5.setAge(13);
list2.add(u4);
list2.add(u5);
List<User> resList = list1.stream().filter(u -> {
for (User user : list2) {
if (u.getName().equals(user.getName())) {
return false;
}
}
return true;
}).collect(Collectors.toList());
// 输出结果为 u1 u2
```
在这个示例中,我们使用了Stream的filter方法来过滤List1,根据name属性与List2中的元素进行比较,如果name相同,则过滤掉该元素。最后,我们将过滤后的结果收集到一个新的List中。\[1\]
#### 引用[.reference_title]
- *1* *3* [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]
- *2* [java使用stream流方式根据某一属性过滤list对象集合](https://blog.csdn.net/m0_52796363/article/details/125723454)[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 ]
阅读全文