Java8 Filter函数用法介绍

Java8 Filter函数用法介绍

Java8 Filter函数用法介绍

引言

Java 8引入了一些新的函数式编程特性,其中filter函数是一个非常重要和常用的函数。本文将详细介绍Java 8中filter函数的用法和示例,帮助读者更好地理解和使用该函数。

什么是filter函数?

在Java 8之前,要从一个集合中筛选出符合条件的元素,通常需要使用循环遍历集合,然后手动判断每个元素是否符合条件,再进行处理。这种方式既繁琐又容易出错。

Java 8中的filter函数可以简化这个过程,它是Stream接口的一个方法,可以接受一个Predicate函数作为参数,根据该函数的判断结果来筛选出符合条件的元素。

filter函数的语法

Stream<T> filter(Predicate<? super T> predicate)
Java

filter函数接受一个Predicate函数作为参数,该函数的类型为Predicate<? super T>,其中T为集合元素的类型。Predicate是一个函数式接口,可以用lambda表达式或方法引用来实现。

filter函数的返回值为一个新的Stream对象,其中仅包含符合条件的元素。

filter函数的用法

下面将介绍filter函数的几种常见用法。

筛选出大于指定值的元素

有时候,我们需要从一个整数列表中筛选出大于指定值的元素。下面是一个示例代码:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> result = numbers.stream()
                              .filter(n -> n > 5)
                              .collect(Collectors.toList());
System.out.println(result);
Java

运行结果:

[6, 7, 8, 9, 10]

上述代码首先创建了一个整数列表numbers,然后使用stream()方法将其转换成一个流,接着调用filter(n -> n > 5)函数对流中的元素进行筛选,保留大于5的元素,最后使用collect(Collectors.toList())方法将筛选结果收集到一个新的列表result中。

筛选出字符串列表中的非空元素

下面是一个示例代码,演示了如何从一个字符串列表中筛选出非空的字符串:

List<String> strings = Arrays.asList("hello", "", "world", "", "java");
List<String> result = strings.stream()
                             .filter(s -> !s.isEmpty())
                             .collect(Collectors.toList());
System.out.println(result);
Java

运行结果:

[hello, world, java]

上述代码使用filter(s -> !s.isEmpty())函数从字符串列表中筛选出非空的字符串,并将结果收集到一个新的列表result中。

筛选出自定义类型对象的特定属性

有时候,我们需要从一个自定义类型对象的列表中筛选出特定属性符合某个条件的对象。下面是一个示例代码,演示了如何从一个学生列表中筛选出分数高于80分的学生:

class Student {
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getScore() {
        return score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}

List<Student> students = Arrays.asList(
        new Student("Alice", 85),
        new Student("Bob", 75),
        new Student("Charlie", 90)
);
List<Student> result = students.stream()
                              .filter(s -> s.getScore() > 80)
                              .collect(Collectors.toList());
System.out.println(result);
Java

运行结果:

[Student{name='Alice', score=85}, Student{name='Charlie', score=90}]

上述代码使用filter(s -> s.getScore() > 80)函数从学生列表中筛选出分数高于80分的学生对象,并将结果收集到一个新的列表result中。

总结

本文介绍了Java 8中filter函数的用法和示例,filter函数是一个非常实用和常用的函数,可以简化集合元素的筛选操作。通过掌握filter函数的用法,我们可以更加高效地处理集合数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册