stream流过滤某个属性不包含在某个List集合中的元素,并且封装为集合
时间: 2024-02-06 22:08:55 浏览: 30
假设有一个对象列表,对象中有一个属性叫做 `property`,需要筛选出其中 `property` 不包含在一个集合 `list` 中的对象,可以使用 Java 8 的流操作来实现:
```
List<MyObject> filteredList = objectList.stream()
.filter(obj -> !list.contains(obj.getProperty()))
.collect(Collectors.toList());
```
上述代码中,`objectList` 是原始对象列表,`MyObject` 类是对象的类型,`getProperty()`方法是获取对象的 `property` 属性的方法。`filter` 过滤器中使用 `!list.contains(obj.getProperty())` 来判断当前对象是否应该被过滤掉,如果 `property` 属性的值不包含在 `list` 集合中,则保留该对象,否则过滤掉。最后,使用 `collect` 方法将过滤后的对象收集到一个新的列表 `filteredList` 中。
相关问题
stream查询某个属性在另个list中的元素
您可以使用Java 8的Stream API来查询某个属性在另一个list中的元素。假设您有一个Person类,其中包含属性name和age,同时您有一个List<Person>列表和一个List<String>字符串列表。如果您想查询名字在字符串列表中的人,请使用以下代码:
```
List<Person> people = ... // your list of people
List<String> names = ... // your list of names
List<Person> filteredPeople = people.stream()
.filter(p -> names.contains(p.getName()))
.collect(Collectors.toList());
```
这将返回一个新的Person列表,其中包含名字在names列表中的人。您可以根据需要使用其他操作来进一步处理此列表。
stream获取list中的某个元素集合
可以使用 Java 8 中的 Stream API 中的 `filter()` 方法和 `collect()` 方法来实现获取 list 中符合条件的元素集合。例如,如果要获取 list 中所有大于等于 5 的元素,可以这样写:
```
List<Integer> list = Arrays.asList(1, 3, 5, 7, 9);
List<Integer> result = list.stream()
.filter(num -> num >= 5)
.collect(Collectors.toList());
```
这里,`filter()` 方法接受一个 Lambda 表达式,表示过滤条件,返回一个新的 Stream,只包含符合条件的元素。然后,`collect()` 方法将 Stream 转换成 List,返回结果集合。