Stream的中止操作

前提

public static List<Emploeer> getEmploer(){List<Emploeer> list = new ArrayList<>();list.add(new Emploeer(1,"张三",18,5000));list.add(new Emploeer(2,"李四",20,5000));list.add(new Emploeer(3,"王五",31,5000));list.add(new Emploeer(4,"赵六",20,5000));list.add(new Emploeer(5,"田七",19,5000));return list;}

reduce规约

定义

根据某种同一的规则将数据进行合并(规则由自己定义)

如何使用(3种)

  1. reduce(BinaryOperator<T> accumulator)
 Optional<Integer> op = list.stream().map(s->s.getId()).distinct().reduce((a,b)->{System.out.println(a+"----->"+b);return a+b;});

定义了种规则将所有数据的值相加得到数据,所以上述代码结果为15。

此方法只有规则一个参数。

操作过程为将第一个数据和第二个数据作为第一次的参数,得到相加的结果作为第二次操作的第一个参数,第三个数据作为第二个参数。

注意此方法要用Optonal容器接,此容器只能存一个数据,专门为防止空指针存在

  1. reduce(T identity, BinaryOperator<T> accumulator)
Integer a = list.stream().map(s->s.getId()).distinct().sorted().reduce(1000,(c,d)->{System.out.println(c+"----->"+d);return c+d;});

此方法有两个参数,一个为1000 一个为规则。

其结果为1015,即第一个数据加上1000在执行正常操作

  1. reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
Integer c= list.parallelStream().map(s->s.getId()).distinct().sorted().reduce(1000,(e,f)->{System.out.println(e+"--->"+f);return e+f;},(x,y)->{System.out.println(x+"----->"+y);return x+y;});

此方法必须为并行流,每个数据都加上1000在彼此进行规则的操作。

collect

这也是流的一个操作,对流进行各种操作

collect(Collector)

里面的参数可以用Collectors收集工具类,此类提供了一系列的静态方法

  1. tolist
 List<Emploeer> list = emploeers.stream().filter(s->s.getAge()>19).collect(Collectors.toList());

将一个流变为一个list集合

  1. toset
Set<Emploeer> set = emploeers.stream().filter(s->s.getAge()>19).collect(Collectors.toSet());

将一个流变为一个set集合

  1. tomap
Map<Integer,Integer> map = emploeers.stream().filter(s->s.getAge()>18).collect(Collectors.toMap(Emploeer::getId,Emploeer::getAge));

将一个流转为map集合注意这里要给键值对的值

java中Strem流终止操作相关推荐

  1. Java中Steam流的用法及使用备忘

    文章目录 Java中Steam流的用法及使用备忘 一. 流的常用创建方法 1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays ...

  2. java中字符流 字节流_理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...

  3. Java 8 - Stream流骚操作解读2_归约操作

    文章目录 Pre 什么是归约操作 元素求和 reduce reduce如何运行的 最大值和最小值 Pre Java 8 - Stream流骚操作解读见到过的终端操作都是返回一个 boolean ( a ...

  4. Java中IO流的总结

    有关Java中IO流总结图 流分类 按方向分 输入流 输出流 按单位分 字节流 字符流 按功能分 节点流 处理流(过滤流) 其他 所有的流继承与这四类流:InputSteam.OutputStream ...

  5. java中各种流的详细使用

    http://hunulei.blogbus.com/logs/2005/07/1296309.html http://java.sun.com/docs/books/tutorial/essenti ...

  6. java 中的流_Java中的流(IO

    Java中的流(IO流. java.io包中定义了多个流类型(类或抽象类)来实现 输入 / 输出功能,可以从不同的角度对其进行分类: 按单位可分为: 字节流         (一个字节一个字节的读取) ...

  7. java中IO流详解

    不断更新中!!! 1.流的定义及分类 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输操作都是以"流"的方式进行.设备可以是文件,网络,内存等.将数据从 ...

  8. Java中IO流体系

    转载: https://mp.weixin.qq.com/s?__biz=MzA5NzgzODI5NA==&mid=2454030958&idx=1&sn=df27aadb92 ...

  9. Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

最新文章

  1. 同样是搞Java,年薪15W和50W的到底差在哪里?
  2. 使用VScode开发ESP8266,PlatformIO开发ESP8266
  3. nsswitch.conf文件详解
  4. 如何将网站升级为HTTPS协议?
  5. 如何实施异构服务器的负载均衡及过载保护?
  6. tensorflow1中如何设置GPU的使用
  7. 冒泡排序的多种写法、逻辑
  8. 我最印象深刻的编程错误经历
  9. SAP Spartacus organization unit list抬头显示所有unit的标题实现
  10. SAP物料主数据创建时间的线性增长
  11. 程序员,当你写程序写累了怎么办。
  12. SVN cleanup 反复失败解决办法
  13. dell网卡linux驱动,DELL R710 服务器 Linux 系统网卡驱动安装
  14. Installation error: INSTALL_FAILED_NO_MATCHING_ABIS
  15. 微信服务号/企业号防止AccessToken过期的操作指南深入浅出
  16. 运算放大器权威指南(Op Amps for Everyone)
  17. Navicat提示Access violation at address 004E9844 in module ‘navicat.exe’
  18. Android 垂直与水平滚动条:Scrollview与HorizontalScrollView
  19. 安装pytorch报错torch.cuda.is_available()=false的解决方法
  20. 数据结构C++实现(顺序栈) 青岛大学王卓老师

热门文章

  1. Python心经(4)
  2. 微信小程序开发日记 (4) 样式设计
  3. 虹软人脸识别3.0 - 图像数据结构介绍(C++)
  4. Vue3 vscode开发新extension:使用 volar 代替 vetur
  5. mysql语法——基于palo数据库
  6. 初二计算机简单动画,浙教版八年级下册信息技术:第七课《简单的动画补间动画》教案...
  7. 如何才能写出优质的代码?
  8. 解决上海移动企信通的empp.dll的Com组件的问题
  9. 零束科技获得中国信通院“2022 XOps产业生态峰会优秀案例”奖
  10. 企业信使(企信通)辅助系统V1.1上线