stream流filter 取出其中一个元素的集合 案例
时间: 2023-09-19 08:06:01 浏览: 114
### 回答1:
假设现在有一个整数列表,我们想要使用 Java 的 Stream 流和 filter 方法来找到其中的偶数。
可以使用以下代码实现:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println("偶数集合为: " + evenNumbers);
}
}
```
以上代码中,首先我们创建了一个整数列表 `numbers`,其中包含了 1 到 10 的整数。然后,我们使用 `stream` 方法将列表转化为流对象,并使用 `filter` 方法来筛选出其中的偶数。最后,我们使用 `collect` 方法将结果收集为一个集合。
输出结果为:`偶数集合为: [2, 4, 6, 8, 10]`,其中包含了原始列表中的所有偶数元素。
### 回答2:
stream流是Java 8中引入的一个新的数据处理方式,filter是其中的一个操作方法。filter方法可以根据指定的条件从流中过滤出满足条件的元素,然后返回一个新的流。下面是一个案例来说明如何使用stream流的filter方法取出其中一个元素的集合。
假设有一个存储了学生信息的集合,每个学生对象包含姓名和年龄两个属性。我们现在希望从这个集合中找出年龄大于18岁的其中一个学生。以下是实现代码示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("张三", 20));
students.add(new Student("李四", 17));
students.add(new Student("王五", 22));
students.add(new Student("赵六", 19));
Optional<Student> student = students.stream()
.filter(s -> s.getAge() > 18) // 过滤出年龄大于18岁的学生
.findFirst(); // 取得第一个满足条件的学生对象
if (student.isPresent()) {
System.out.println("年龄大于18岁的学生姓名:" + student.get().getName());
} else {
System.out.println("找不到满足条件的学生!");
}
}
}
输出结果为:年龄大于18岁的学生姓名:张三
在这个案例中,我们首先创建了一个存储学生信息的集合。然后使用stream流的filter方法,根据条件筛选出年龄大于18岁的学生对象。最后使用findFirst方法取得第一个满足条件的学生对象,并且将其姓名打印出来。
通过这个案例,我们可以看到使用stream流的filter方法可以方便地从集合中取出满足条件的元素,并返回一个新的流供我们进一步处理。
### 回答3:
stream流的filter操作是一种对流进行筛选的操作,可以根据条件过滤流中的元素。下面以一个案例来说明如何使用stream流的filter操作来取出其中一个元素的集合。
假设有一个学生列表,每个学生对象都有姓名、年龄和成绩属性。我们想要从这个学生列表中,找出年龄大于18岁的学生,并将他们的成绩放入一个集合中。
首先,我们可以使用stream流操作将学生列表转换为流:
```java
List<Student> studentList = Arrays.asList(new Student("Tom", 20, 90),
new Student("John", 19, 85),
new Student("Mary", 17, 95),
new Student("Chris", 21, 88));
Stream<Student> studentStream = studentList.stream();
```
然后,我们使用filter操作筛选出年龄大于18岁的学生:
```java
Stream<Student> filteredStudentStream = studentStream.filter(student -> student.getAge() > 18);
```
在这里,我们使用lambda表达式来指定过滤的条件,即年龄大于18岁的学生。
最后,我们使用map操作将筛选后的学生转换为他们的成绩,并将其收集到一个集合中:
```java
List<Integer> scoreList = filteredStudentStream.map(Student::getScore)
.collect(Collectors.toList());
```
在这里,我们使用map操作将学生对象转换为成绩,然后使用collect操作将成绩收集到一个列表中。
这样,我们就成功地从学生列表中找出了年龄大于18岁的学生,并将他们的成绩放入了一个集合中。
阅读全文