• 廖雪峰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 * 用于排除不满足条件的元素
  • 相关阅读:
    Python-按指定列排序、斜着遍历
    牛客-SQL-刷题(下)
    特征工程之离散变量处理
    python 原生列表删除元素方法总结
    sklearn进行归一化
    Keras安装与测试遇到的坑
    常用机器学习算法优缺点及应用汇总
    特征工程
    机器学习模型评估指标总结
    pyecharts多图表同一页显示
  • 原文地址:https://www.cnblogs.com/csj2018/p/11481115.html
Copyright © 2020-2023  润新知