list.stream().filter()过滤

过滤格式:list.stream().filter(Predicate<? super T> predicate);

名词解释:
list:一个列表
stream():支持顺序和并行聚合操作的一系列元素。学习链接
filter():返回由与此给定谓词匹配的此流的元素组成的流。(要留下什么样的数据)
Predicate<? super T> predicate:表示一个参数的谓词(布尔值函数)。 (说人话:拉姆达表达式)

void test() {
        List<String> list = setList();
        List<String> result = list.parallelStream()
                .filter(itm -> {
                    return itm.equals("a");
                })
                .collect(Collectors.toList());

        for (String val : result) {
            System.out.println(val);
        }
    }

List setList() {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        return list;
    }

输出

a
a

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java 8的Stream API来过滤多个元素。首先将需要过滤List转换为Stream,然后使用filter()方法来过滤需要的元素。可以使用多个filter()方法来过滤多个条件。代码示例如下: ``` List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); List<Integer> evenNumbers = list.stream() .filter(i -> i % 2 == 0) .filter(i -> i > 3) .collect(Collectors.toList()); ``` 上面的代码中,list是需要过滤List,第一个filter()方法过滤出偶数,第二个filter()方法过滤出大于3的数。最后使用collect()方法将过滤后的结果存入evenNumbers中。 ### 回答2: Java 8中的Stream API为我们提供了一种更为简单和高效的处理集合数据的方式。其中,filter()是Stream API中的一个非常常用的方法,我们可以用它来筛选出满足条件的元素。 当我们需要对一个集合中的元素进行多个条件的筛选时,我们可以使用Stream API中的链式调用来实现。 首先,我们需要将集合转换为Stream对象,然后用filter()方法来筛选元素。每当我们需要针对不同的条件筛选元素时,都可以继续使用filter()方法进行链式调用。比如,我们可以这样来筛选一个集合中符合一个特定条件的元素: List<String> list = Arrays.asList("java", "python", "c++", "javascript", "go"); List<String> result = list.stream() .filter(str -> str.contains("a")) .filter(str -> !str.contains("m")) .collect(Collectors.toList()); 在上面的代码中,我们首先定义了一个字符串集合list,然后将其转换为Stream对象。接着,我们通过两次filter()方法的连续调用来逐个筛选出包含字符"a"并且不包含字符"m"的元素。最后,我们使用collect()方法将符合条件的元素收集到一个新的List中,以供进一步使用。 需要注意的是,在Stream API中,filter()方法支持Lambda表达式作为其参数,从而使我们可以更加灵活地筛选元素。此外,我们在使用filter()方法时还可以使用Predicate对象来进行筛选操作,从而进一步简化我们的代码。 ### 回答3: Java 8 引入了 Stream API,它是用来对集合进行函数式操作的 API,提供了 filter() 方法来对集合中的元素进行过滤操作。而在 filter() 方法中,我们可以使用单个条件对集合中的元素进行过滤,但是有时候需要对多个条件进行过滤,这时就需要使用 filter() 方法进行多重过滤。 具体来说,就是通过链式调用多个 filter() 方法,每个方法传入一个不同的条件进行过滤,最终得到符合所有条件的元素。例如: ``` List<Person> people = //...数据源 List<Person> result = people.stream() .filter(p -> p.getAge() > 18) .filter(p -> p.getSex() == SexEnum.MALE) .filter(p -> p.getCountry().equals("China")) .collect(Collectors.toList()); ``` 上述代码通过链式调用三个 filter() 方法,分别根据年龄、性别和国籍三个条件对人员集合进行多重过滤,最终得到符合所有条件的人员集合。 需要注意的是,多重过滤也会影响程序的性能,因为每个 filter() 方法都会对集合中的每个元素进行遍历和判断,所以在实际应用中需要根据具体情况进行权衡。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值