2025年02月04日 Java 8中的Filter操作 极客笔记
在Java 8中,引入了Lambda表达式和Stream API,使得对集合数据的操作更加便捷和高效。在这个版本中,可以通过Stream的filter方法来实现对集合数据的过滤操作,这样可以更加优雅地进行数据处理。
Filter操作是一种对集合数据进行筛选的操作,通过指定一个条件来过滤出符合条件的元素。在Java 8中,可以使用Stream的filter方法来实现对集合数据的过滤。
在Java 8中,Stream提供了filter方法来进行过滤操作。filter方法接受一个Predicate函数式接口作为参数,该接口定义了一个用来判断元素是否符合条件的方法。
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);
上面的代码示例中,首先创建了一个包含1到10的整数列表,然后使用Stream的filter方法对列表中的元素进行过滤,只保留其中的偶数,最后使用collect方法将结果收集到一个新的列表中并打印出来。
运行结果为:
[2, 4, 6, 8, 10]
Filter操作在实际开发中有着广泛的应用场景,比如筛选出符合条件的数据、过滤无效或重复数据等。下面我们通过一个更加具体的示例来展示Filter操作的应用。
假设有一个学生列表,每个学生有姓名、年龄和成绩字段,我们需要筛选出年龄在18岁以上且成绩在80分以上的学生。可以使用Filter操作来实现这个需求。
class Student {
String name;
int age;
int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20, 85));
students.add(new Student("Bob", 18, 75));
students.add(new Student("Cathy", 22, 90));
List<Student> qualifiedStudents = students.stream()
.filter(s -> s.age >= 18 && s.score >= 80)
.collect(Collectors.toList());
qualifiedStudents.forEach(System.out::println);
运行结果为:
Student{name='Alice', age=20, score=85}
Student{name='Cathy', age=22, score=90}
通过这个示例,我们可以看到Filter操作的强大之处,简洁高效地筛选出符合条件的数据。
Java 8中的Filter操作提供了一种便捷、高效的方式来对集合数据进行筛选,通过Lambda表达式和Stream API的结合,可以编写简洁优雅的代码实现数据过滤。在实际项目中,Filter操作经常用于筛选数据、数据清洗等场景,能够提高代码的可读性和可维护性。
本文链接:http://so.lmcjl.com/news/22593/