JAVA 之 stream

63 阅读2分钟

stream

stream作为java8中的新特性,是对集合对象功能的加强,专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。

优点:

1.高效率的并行操作

2.有多种功能性的聚合操作

3.函数式编程,使代码更加简洁

stream的使用

  • 流程图image-20230410202039796
  1. 从数据源中出现流,数据源可以是集合,数组

  2. 流可以被过滤,排序,映射,每个操作都会返回一个新的流

  3. 流的操作分为中间操作和终结操作,注意所有中间操作都是惰性的,只有有终结操作时才会执行。

    stream和parallelStream的区别

    stream是顺序流,由主线程按顺序对流执行操作,而**parallelStream是并行流**,内部以多线程并行执行的方式对流进行操作,*需要注意使用并行流的前提是流中的数据处理没有顺序要求(会乱序,即使用了*forEachOrdered****)****。

几个栗子

  • image-20230410202853511

    通过map将row3中的元素映射为数组,再进行两次过滤,最后通过收集器将各个数组转换成集合最后关闭流

  • image-20230410203315878

    Stream.of创建流,reduce中 0.0 为每一次操作的起始值, a最后会得到a+b的值,传入的参数需要声明类型

一些常用api:

  • **filter():**根据传入的条件进行过滤
  • **toList():**收集流中元素为List
  • **toArray():**收集流中元素为Array
  • sorted():进行排序
  • distinct(): 去重
  • map(): 按照传入的规则进行转换

学习资源

(10条消息) 【Java 8系列】Stream详解,看这一篇就够啦_java stream_善良勤劳勇敢而又聪明的老杨的博客-CSDN博客

不会还有人没用过Java8函数式编程之Stream流式操作吧_哔哩哔哩_bilibili