java 使用stream 从集合中取符合条件的元素
时间: 2024-11-06 19:17:53 浏览: 35
在Java中,Stream API提供了一种方便的方式来过滤、映射和收集集合中的元素。如果你想从一个集合中取出满足特定条件的元素,你可以使用`filter()`方法。这个方法接受一个谓词函数作为参数,该函数会应用于每个元素,只有当函数返回true的元素才会被包含在新的流中。
下面是一个例子,假设我们有一个人员列表,我们想找出所有年龄大于18岁的员工:
```java
List<Person> employees = ...; // 假设Person类有age字段
List<Person> adults = employees.stream() // 创建一个流
.filter(person -> person.getAge() > 18) // 过滤出年龄大于18的员工
.collect(Collectors.toList()); // 收集到一个新的列表中
adults.forEach(System.out::println); // 打印成年人
```
在这个示例中,`filter()`方法创建了一个新流,只包含年龄大于18的人,最后用`collect()`方法将其转换回列表形式。
相关问题
Java stream 按条件获取集合中的元素组成新的集合
可以使用 Java 8 Stream 中的 filter() 方法过滤符合条件的元素,再使用 map() 方法将元素转换为新的对象,并使用 collect() 方法将处理后的元素收集到新的集合中。例如:
```
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);
List<Integer> newList = list.stream()
.filter(i -> i % 2 == 0)
.map(i -> i * 2)
.collect(Collectors.toList());
System.out.println(newList); // 输出 [4, 8, 12, 16]
```
上述代码中,首先使用 filter() 方法筛选出集合中的偶数,然后使用 map() 方法将每个偶数乘以 2,最后使用 collect() 方法将处理后的元素收集到新的集合中。
java8取出集合中符合条件的集合
在Java 8中,如果你想要从集合(如List、Set或Map)中获取满足特定条件的元素,可以使用`filter()`方法,这是Stream API的一部分。这个方法返回一个新的流,其中只包含那些通过给定谓词测试的元素。
例如,如果你有一个整数列表,你可以这样做:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.add(5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0) // 谓词检查数字是否为偶数
.collect(Collectors.toList()); // 将过滤后的流转换回列表
System.out.println(evenNumbers); // 输出:[2, 4]
```
在这个例子中,`filter(n -> n % 2 == 0)`是一个lambda表达式,它作为谓词被传递给了`filter()`方法。如果元素满足这个条件(即它是偶数),则会被包含在新的`evenNumbers`列表中。
阅读全文