stream流过滤某个属性不包含在某个List集合中的元素,并且封装为集合
时间: 2024-02-06 15:08:55 浏览: 87
假设有一个对象列表,对象中有一个属性叫做 `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中的某个元素集合。以下是一个示例代码:
```
List<String> list = Arrays.asList("apple", "banana", "orange", "kiwi", "grape");
List<String> result = list.stream()
.filter(str -> str.startsWith("a"))
.collect(Collectors.toList());
System.out.println(result); // Output: [apple]
```
上述代码使用了`stream()`方法将List转换成了一个Stream对象,并使用`filter()`方法筛选出以字母"a"开头的字符串,最后使用`collect()`方法将筛选结果转换成List集合。执行该代码会输出`[apple]`。
stream如何用一个对象集合中对象的某个属性生成一个新的集合
Stream API 是 Java 8 引入的强大工具,用于处理集合数据流,可以对集合中的元素进行过滤、映射、排序等操作,而无需创建临时数组。如果你想要通过对象集合中每个对象的某个属性生成一个新的集合,你可以使用 `map` 函数。
例如,假设你有一个 `Person` 类,它有两个属性 `name` 和 `age`,你想基于 `name` 属性生成一个新的 `String` 集合,可以这样做:
```java
List<Person> personList = ... // 假设这是包含 Person 对象的列表
List<String> nameList = personList.stream()
.map(Person::getName) // 使用 Lambda 表达式获取每个 Person 的名字
.collect(Collectors.toList()); // 将 Stream 转换成 List<String>
```
在这个例子中,`map(Person::getName)` 这一行就是将每个 `Person` 对象转换成其 `name` 字符串,然后 `collect(Collectors.toList())` 将转换后的流收集到一个新的 `String` 列表中。
阅读全文