登录
首页 >  文章 >  java教程

JavaStream筛选技巧全解析

时间:2026-02-08 20:37:44 162浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Java Stream筛选方法详解》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

Stream.filter是中间操作,用于筛选满足条件的元素。它接收Predicate参数,通过Lambda表达式实现条件判断,如筛选偶数、字符串长度或对象属性,并支持and、or、negate组合条件,返回新流不修改原数据,常用于链式调用。

Java里如何使用Stream.filter筛选元素_Stream筛选操作说明

在Java中,Stream.filter 是一个中间操作,用于从数据流中筛选出满足指定条件的元素。它接收一个 Predicate(谓词)函数式接口作为参数,该接口返回布尔值,只有当返回 true 时,对应元素才会保留在结果流中。

基本语法

filter 方法的定义如下:

Stream filter(Predicate predicate)

其中,Predicate 是一个函数式接口,常通过 Lambda 表达式实现。

使用示例

以下是一些常见的使用场景和代码示例:

1. 筛选集合中的偶数

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List evenNumbers = numbers.stream()
    .filter(n -> n % 2 == 0)
    .collect(Collectors.toList());
System.out.println(evenNumbers); // 输出: [2, 4, 6]

2. 筛选字符串长度大于3的元素

List words = Arrays.asList("a", "ab", "hello", "hi", "stream");
List longWords = words.stream()
    .filter(s -> s.length() > 3)
    .collect(Collectors.toList());
System.out.println(longWords); // 输出: [hello, stream]

3. 筛选对象列表中的特定对象

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter 方法
    public int getAge() { return age; }
    public String getName() { return name; }
}

List people = Arrays.asList(
    new Person("Alice", 25),
    new Person("Bob", 17),
    new Person("Charlie", 30)
);

List adults = people.stream()
    .filter(p -> p.getAge() >= 18)
    .collect(Collectors.toList());

上述代码会筛选出年龄大于等于18岁的“成年人”。

组合多个筛选条件

你可以使用 Predicate 的逻辑操作组合多个条件:

  • and():同时满足两个条件
  • or():满足任一条件
  • negate():取反条件
Predicate isAdult = p -> p.getAge() >= 18;
Predicate isNameLong = p -> p.getName().length() > 4;

List result = people.stream()
    .filter(isAdult.and(isNameLong))
    .collect(Collectors.toList());

这将筛选出既是成年人、姓名长度又大于4的人。

基本上就这些。filter 操作简洁高效,配合 Lambda 和方法引用,能让集合处理更清晰易读。注意它不会修改原数据,而是生成新的流,适合链式调用。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>