zoukankan      html  css  js  c++  java
  • 廖雪峰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 * 用于排除不满足条件的元素
  • 相关阅读:
    第二阶段团队冲刺第二天站立会议
    第二阶段冲刺第一天站立会议
    对身边常用的软件进行评价
    学习进度条
    进度条
    团队冲刺第四天站立会议
    用户模板及场景分析
    团队冲刺第一天战略会议
    团队冲刺第九天
    团队冲刺第八天
  • 原文地址:https://www.cnblogs.com/csj2018/p/11481115.html
Copyright © 2011-2022 走看看