java lambda filter
时间: 2025-01-08 16:07:36 浏览: 4
### 使用Java Lambda表达式实现过滤方法
在Java中,`Stream API` 提供了一种简洁而强大的方式来处理集合数据。通过使用 `filter()` 方法可以方便地筛选出满足特定条件的数据项。
#### 基本语法结构
当利用Lambda表达式配合 `filter()` 进行操作时,通常会遵循如下模式:
```java
stream.filter(element -> condition).collect(Collectors.toList());
```
这里 `element` 是流中的每一个元素;`condition` 则是用来决定该元素是否应该被保留下来的布尔表达式[^1]。
#### 实际案例展示
假设有一个整数列表,并希望从中选出所有的偶数:
```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);
// Filter even numbers using lambda expression
List<Integer> filteredNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(filteredNumbers); // Output: [2, 4, 6]
}
}
```
这段代码创建了一个包含六个整数的列表,接着应用了 `.stream().filter(...)` 来构建一个新的只含有原列表里偶数值的新列表。
对于更复杂的场景,比如基于对象属性来进行过滤,则可以通过访问对象字段完成同样的逻辑。例如,在一个学生实体类组成的列表中挑选成绩大于等于90分的学生记录:
```java
class Student {
private String name;
private int score;
public Student(String name, int score){
this.name = name;
this.score = score;
}
// Getters & Setters...
@Override
public String toString(){
return "Student{name='" + name + "', score=" + score + "}";
}
}
// ...
List<Student> students = Arrays.asList(
new Student("Alice", 87),
new Student("Bob", 92),
new Student("Charlie", 85));
List<Student> topStudents = students.stream()
.filter(student -> student.getScore() >= 90)
.collect(Collectors.toList());
System.out.println(topStudents);
// Possible output: [Student{name='Bob', score=92}]
```
上述例子展示了如何运用Lambda表达式的简洁形式替代传统匿名内部类写法,从而让代码更加直观易读[^2]。
阅读全文