添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
害羞的海龟  ·  【js jQuery】map集合 ...·  1 周前    · 
阳刚的小狗  ·  Java8 Stream ...·  3 天前    · 
严肃的乒乓球  ·  Running python ...·  3 月前    · 
飘逸的哑铃  ·  Cursor Tab·  3 月前    · 
爱逃课的毛豆  ·  Zheng Liu's Research ...·  4 月前    · 
内第一个项目: 全栈前后端分离博客项目 ,演示地址: http://116.62.199.48/ , 1.0 版本已经更新完毕,正在更新 2.0 版本。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4 手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线 ,目前 已更新了 224 小节,累计 35w+ 字,讲解图:1544 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1000+ 小伙伴加入 ,欢迎 点击围观

在 Java 1.8 中,Stream 是一个用于操作集合元素的新 API。Stream API 提供了丰富的功能,其中之一就是 filter() 方法。 filter() 方法可以 用于过滤集合中的元素 ,根据指定的条件筛选出满足条件的元素,从而得到一个新的流。

本小节将深入介绍 Java 1.8 中 Stream 的 filter() 方法,并通过示例代码演示如何使用它。

filter() 方法概览

在 Stream API 中, filter() 方法用于根据指定的条件过滤流中的元素。它接受一个 Predicate 函数 作为参数,该函数用于判断流中的元素是否满足过滤条件。

Stream<T> filter(Predicate<? super T> predicate)
  • T 表示流中元素的类型。
  • predicate 是一个函数式接口,用于指定过滤条件。
  • 使用 filter() 方法

    让我们通过几个示例来说明如何使用 filter() 方法。

    示例 1:过滤整数列表中的偶数

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    // 使用 filter() 方法筛选出偶数
    Stream<Integer> evenNumbersStream = numbers.stream().filter(num -> num % 2 == 0);
    // 将筛选结果转换为一个新的集合
    List<Integer> evenNumbersList = evenNumbersStream.collect(Collectors.toList());
    System.out.println("Even numbers: " + evenNumbersList); // 输出 "Even numbers: [2, 4, 6, 8, 10]"
    

    在这个例子中,我们首先创建一个整数列表 numbers。然后,我们使用 stream() 方法将列表转换为流,再使用 filter() 方法过滤出偶数,并将过滤结果转换为新的列表。

    示例 2:过滤字符串列表中的特定字符

    List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "grape");
    // 使用 filter() 方法筛选出包含字符 "a" 的字符串
    Stream<String> filteredWordsStream = words.stream().filter(word -> word.contains("a"));
    // 将筛选结果转换为一个新的集合
    List<String> filteredWordsList = filteredWordsStream.collect(Collectors.toList());
    System.out.println("Filtered words: " + filteredWordsList); // 输出 "Filtered words: [apple, banana, date, grape]"
    

    在这个例子中,我们首先创建一个字符串列表 words。然后,我们使用 stream() 方法将列表转换为流,再使用 filter() 方法过滤出包含字符 "a" 的字符串,并将过滤结果转换为新的列表。

    示例 3:过滤自定义对象列表

    class Person {
        private String name;
        private int age;
        // 构造函数、Getter 和 Setter 方法
        // toString() 方法
    List<Person> people = Arrays.asList(
        new Person("Alice", 25),
        new Person("Bob", 30),
        new Person("Charlie", 22)
    // 使用 filter() 方法筛选出年龄大于等于 25 的人
    Stream<Person> filteredPeopleStream = people.stream().filter(person -> person.getAge() >= 25);
    // 将筛选结果转换为一个新的集合
    List<Person> filteredPeopleList = filteredPeopleStream.collect(Collectors.toList());
    System.out.println("Filtered people: " + filteredPeopleList);
    

    在这个例子中,我们首先创建一个自定义对象列表 people,其中包含了三个 Person 对象。然后,我们使用 stream() 方法将列表转换为流,再使用 filter() 方法过滤出年龄大于等于 25 的人,并将过滤结果转换为新的列表。

    Java 1.8 中的 Stream API 提供了丰富的功能,其中 filter() 方法可以用于过滤集合中的元素,根据指定的条件筛选出满足条件的元素,从而得到一个新的流。