zoukankan      html  css  js  c++  java
  • Stream流

    作用:

    将对象转Stream流 再对流数据进行操作 过滤/修改等操作

    Stream流基本都用到函数式接口

    配合lambda简化代码

    例子

    @Data
    @AllArgsConstructor
    public class Juc6 {
        int id;
        int age;
        String name;
    }
    
    class StreamTest{
        public static void main(String[] args) {
            Juc6 u1 = new Juc6(1,21,"a");
            Juc6 u2 = new Juc6(2,22,"b");
            Juc6 u3 = new Juc6(3,23,"c");
            Juc6 u4 = new Juc6(4,24,"d");
            List<Juc6> list = Arrays.asList(u1,u2,u3,u4);
            //交给Stream流计算
            list.stream().
                    filter((u)->{return u.getId()%2==0;})//过滤对象
                    .filter((u)->{return u.getAge()>21;})
                    .map((u)->{u.setName(u.getName().toUpperCase());
                        return u;})//对对象数据操作
                    .sorted((uu1,uu2)->{return uu2.getName().compareTo(uu1.getName());})//排序
                    .limit(1) //分页
                    .forEach((e)->{ System.out.println(e); });//打印
        }
    }

    点开源码进行代码分析

    list.stream()   将list转stream流
    
    //下面都需要点开源码分析
    filter  //filter过滤 
        Stream<T> filter(Predicate<? super T> predicate);
        发现入参是Predicate 是一个函数式接口
        若忘记参数怎么定义再点开 看到该函数式接口方法是boolean test(T t);
        即可用lambda表达式中方法体返回boolen 来过滤对象
    
    
    map
        <R> Stream<R> map(Function<? super T, ? extends R> mapper);
        同是函数接口Function
        点开Function 看到方法是R apply(T t);
        即可用lambda表达式中方法体出传入参数 自己对数据处理 后再返回
       //如 .map((u)->{u.setName(u.getName().toUpperCase());
                        return u;})//对对象数据操作
    
    
    sorted    //排序
        函数式接口Comparator
        方法是int compare(T o1, T o2);
        即需定义2个入参
        //如上 .sorted((uu1,uu2)->{return uu2.getName().compareTo(uu1.getName());})//排序
    
    
    forEach
        函数式接口Consumer
        方法void accept(T t);
        只有入参 没有返回值
        //如上  .forEach((e)->{ System.out.println(e); })
  • 相关阅读:
    华为交换机配置NTP服务端/客户端
    利用shell简单监控网络设备的接口状态发出告警
    Linux下自动清理超过指定大小文件
    Kotlin进阶学习5
    Kotlin进阶学习4
    Kotlin进阶学习3
    大二暑假第一周学习总结
    Kotlin进阶学习2
    Kotlin进阶学习1
    Kotlin基础学习3
  • 原文地址:https://www.cnblogs.com/hbhb/p/14354319.html
Copyright © 2011-2022 走看看