Java stream 将列表中符合条件的数据拿到表头
时间: 2023-09-20 15:10:52 浏览: 130
可以使用 Java Stream 中的 `findFirst()` 方法。假设你有一个 `List` 对象,其中包含符合条件的元素和其他元素,你可以使用 `filter()` 方法过滤出符合条件的元素,然后使用 `findFirst()` 方法获取第一个符合条件的元素,最后使用 `orElse()` 方法指定默认值,以防列表中不存在符合条件的元素。
以下是示例代码:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Integer firstEven = numbers.stream()
.filter(n -> n % 2 == 0) // 过滤出偶数元素
.findFirst() // 获取第一个符合条件的元素
.orElse(-1); // 如果不存在偶数元素,则返回 -1
```
在以上示例中,我们使用 `filter()` 方法过滤出偶数元素,然后使用 `findFirst()` 方法获取第一个偶数元素,最后使用 `orElse()` 方法指定默认值 -1。如果列表中不存在偶数元素,则返回 -1。
相关问题
java stream流过滤出符合条件的数据并统计个数
假设有一个包含多个人员信息的列表,需要使用Java Stream流过滤出年龄大于等于18岁的人员信息,并统计个数。代码如下:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20));
personList.add(new Person("Jerry", 16));
personList.add(new Person("Alice", 18));
personList.add(new Person("Bob", 25));
personList.add(new Person("John", 30));
long count = personList.stream()
.filter(person -> person.getAge() >= 18)
.count();
System.out.println("符合条件的人员个数为:" + count);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
输出结果为:
```
符合条件的人员个数为:4
```
在上述代码中,使用了Java 8中新增的Stream流对人员列表进行筛选过滤。首先使用`stream()`方法将列表转换为一个流,并使用`filter()`方法对流中的元素进行筛选,筛选条件为年龄大于等于18岁。最后使用`count()`方法统计筛选后的元素个数。
java stream 将列表对象中的列表合并为一个列表
可以使用 Java 8 Stream 的 flatMap() 方法将列表对象中的列表合并为一个列表。具体操作如下:
假设有一个包含多个列表的列表对象 `List<List<T>> list`,其中 `T` 是列表中元素的类型。要将所有列表合并为一个列表,可以使用以下代码:
```java
List<T> result = list.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
```
上述代码中,首先使用 `stream()` 方法将 `list` 转换为一个流,然后使用 `flatMap()` 方法将每个列表转换为一个流,并将它们合并为一个流。最后使用 `collect()` 方法将流中的元素收集到一个列表中,这里使用的是 `Collectors.toList()` 方法。
最终得到的 `result` 列表就是将所有列表中的元素合并为一个列表的结果。