• 廖雪峰Java16函数式编程-2Stream-5filter


    1.filter简介

    Stream.filter()是一个转换方法,把一个Stream转换为另一个Stream。
    所谓filter操作,就是对一个Stream的所有元素进行测试,不满足条件的元素就被过滤掉,剩下的元素构成了一个新的Stream
    例如对{1, 2, 3, 4, 5}调用filter,传入的测试函数是f(x)=x%2,结果为1,就通过;否则不通过。

    实现filter的代码

    Stream<Integer> s = Stream.of(1, 2, 3, 4, 5);
    Stream<Integer> s2 = s.filter((n)->n%2 ==1);
    

    通过filter操作的Stream,它的元素可能变少

    2. filter过程

    filter方法接收的对象是Predicate接口对象
    Stream filter(Predicate<? super T> predicate);
    @FunctionalInterface
    public interface Predicate{
    //判断元素t是否符合条件
    boolean test(T t);
    }

    ##    3. filter示例
    ```#java
    package com.feiyangedu.sample.pop3.SteamStudy;
    
    import java.util.function.Supplier;
    import java.util.stream.Stream;
    
    class NatualSupplier implements Supplier {
        long x = 0;
        public Long get(){
            x++;
            return x;
        }
    }
    public class StreamFilterSample {
        public static void main(String[] args){
            Stream<Long> natural = Stream.generate(new NatualSupplier());
            Stream<Long> odd = natural.filter((n)->n%2==1);
            odd.limit(20).forEach(System.out::println);
        }
    }
    
    ## 4. 总结: filter方法: * 将一个Stream的每个元素进行测试,通过测试的元素被过滤后生成一个新的Stream * 用于排除不满足条件的元素
  • 相关阅读:
    JAVA 大数据基本操作
    C++ set 基本操作
    JVM 线上故障排查基本操作
    Git基本常用命令
    Git 入门:概念、原理、使用
    30分钟学会如何使用Shiro
    做个男人,做个成熟的男人,做个有城府的男人
    Nginx的最基本功能以及简单配置
    博客网站
    单点登录原理与简单实现
  • 原文地址:https://www.cnblogs.com/csj2018/p/11481115.html
Copyright © 2020-2023  润新知