先创建Stream,可以用of也可以用list.stream()
    中间操作符
    中间操作符可以叠加,用多次。终止操作符只能用一次。

    • map,把什么map成什么

    遍历Stream,map成字符串长度:

    1. Stream.of("apple","banana","orange","waltermaleon","grape")
    2. .map(e->e.length()) //转成单词的长度 int
    3. .forEach(e->System.out.println(e)); //输出
    • flatmap,对流的每一项数据进行自定义的处理(比map更高级的处理),然后再转成流
    • limit 限流
    • distint 去重
    • filter 过滤,在filter中设一个条件,将满足条件的流下
    • peek 在终结操作符之前,提前消费Stream的元素。比如在终结操作符之前,将user的姓名改掉
    • skip 跳过一些元素,比如设一个整数,跳过前几个值
    • sorted排序,在sorted里面放入一个Comparator
    • reduce,翻译过来为减少,根据例子理解:计算一个数组所有元素的乘积,也可以用最大最小值

    终止操作符

    • collect 收集操作,将所有数据收集起来,这个操作非常重要,官方的提供的Collectors 提供了非常多收集器,可以说Stream 的核心在于Collectors。
    • count 统计操作,统计最终的数据个数。
    • findFirst、findAny 查找操作,查找第一个、查找任何一个 返回的类型为Optional。
    • noneMatch、allMatch、anyMatch 匹配操作,数据流中是否存在符合条件的元素 返回值为bool 值。
    • min、max 最值操作,需要自定义比较器,返回数据流中最大最小的值。
    • reduce 规约操作,将整个数据流的值规约为一个值,count、min、max底层就是使用reduce。
    • forEach、forEachOrdered 遍历操作,这里就是对最终的数据进行消费了。
    • toArray 数组操作,将数据流的元素转换成数组。

    附:
    Demo集合:https://zhuanlan.zhihu.com/p/105018072

    Java8方法在Stream里面有,在Optional里面也有