JDK8中Stream的Filter方法

简介: JDK8中Stream的Filter方法

前言


JDK8中Stream的Filter方法,你会用吗?


今天我们就来学习JDK8中Stream流的filter方法,从名称上面来看,就知道这个方法是用来过滤数据用的,下面我们就一起来学习一下吧。


JDK8中Stream之filter方法的使用


filter方法的功能就是过滤,过滤,还是他*的过滤。


先直接上一波代码示例看一下:


public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("张三");
    list.add("张四");
    list.add("张五");
    list.add("赵三");
    list.add("赵四");
    list.add("赵五");
    System.out.println(list.stream().filter(a -> a.contains("张")).collect(Collectors.toList()));
}


通过上面的代码执行出来的结果如下:


[张三, 张四, 张五]


看完了上面的使用示例,你是否感觉到了一些熟悉呢,其实就是一个判断条件而已,其实使用起来还是非常简单的,通过filter方法进行过滤也更加方便。


在其内传入参数,参数为Predicate函数接口实现类,这个我们可以在filter源码中可以看的出来。


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


由此,我们只需要传入一个自定义的Predicate函数接口,关于Predicate函数式接口,我已经在之前的文章写到了,大家有兴趣的话,可以自行去看一下。


如果我们不使用的JDK8的时候,又会如何进行过滤呢?下面来看一下一个笨方法。


public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("张三");
    list.add("张四");
    list.add("张五");
    list.add("赵三");
    list.add("赵四");
    list.add("赵五");
    List<String> nowList = new ArrayList<>();
    for (String name : list){
        if(name.contains("张")){
            nowList.add(name);
        }
    }
    System.out.println(nowList);
}


在旧版本的JDK中,通常我们会使用上述的示例代码,放在如今算是很笨的方法了。


总结


今天我们又再次学习了filter方法的使用,对于集合数据的过滤,大家又有什么更好的方式可以解决呢?


相关文章
|
1月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
25 1
|
3月前
|
API
JDK8的stream有求和方法吗?
【8月更文挑战第20天】JDK8的stream有求和方法吗?
123 3
|
3月前
|
Java
JDK序列化原理问题之Hessian框架不支持writeObject/readObject方法如何解决
JDK序列化原理问题之Hessian框架不支持writeObject/readObject方法如何解决
|
3月前
|
Java Maven 容器
JDK版本特性问题之想使用接口中的私有方法,如何实现
JDK版本特性问题之想使用接口中的私有方法,如何实现
JDK版本特性问题之想使用接口中的私有方法,如何实现
|
3月前
|
Java API
JDK版本特性问题之使用 ofNullable 方法来预防 NullPointerException,如何解决
JDK版本特性问题之使用 ofNullable 方法来预防 NullPointerException,如何解决
|
5月前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
51 1
|
6月前
|
Java API
【JAVA进阶篇教学】第三篇:JDK8中Stream API使用
【JAVA进阶篇教学】第三篇:JDK8中Stream API使用
|
5月前
|
Java
JavaSE——JDK8新特性(2/2):方法引用(静态方法的引用、实例方法的引用、特定类型的方法引用、构造器引用)
JavaSE——JDK8新特性(2/2):方法引用(静态方法的引用、实例方法的引用、特定类型的方法引用、构造器引用)
34 0
|
6月前
|
Java API 数据处理
JDK 8:Stream API——数据处理的新篇章
JDK 8引入了Stream API,为Java中的数据处理提供了一种全新的方式。本文将详细介绍Stream API的原理、优势以及如何在实际开发中应用这一特性。
|
6月前
|
Java 开发者
JDK 9新特性探秘:接口中的私有方法
本文旨在探讨Java Development Kit 9(JDK 9)为Java接口引入的新特性——私有方法。在JDK 9之前,接口只能包含公共的抽象方法和常量。然而,随着Java的不断发展,接口中需要更加灵活的方式来处理复杂性和代码重用。因此,JDK 9引入了私有方法,允许开发者在接口内部定义私有方法和私有静态方法,从而提高了代码的模块性和可维护性。本文将详细介绍这一新特性的使用方法、应用场景及其对Java编程的影响。