创建 Stream
可以通过 Collection 系列集合提供的 stream()(串行流) 或 parallelStream()(并行流)
@Testpublic void test(){List<String> list = new ArrayList<>();Stream<String> stream1 = list.stream();}
通过 Arrays 中的静态方法 stream() 获取数组流
@Testpublic void test(){int[] arr = new Array[10];Arrays.stream(arr);}
通过 stream 中的静态方法 of()
@Testpublic void test(){Stream.of();}
中间操作
1. 筛选与切片
filter 接受 Lambda,从流中排除某些元素
limit 截断流,使元素不超过给定数量
skip(n) 跳过元素,返回一个扔掉 n 个元素的流,若流中的元素不足 n 个,则返回一个空流。与 limit(n) 互补
distinct 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素2. 映射
map 接收 Lambda,将元素转换成其他形式提取信息,接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
flatMap 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流3. 排序
sorted() 自然排序
sorted(Comparator com) 定制排序4. 查找与匹配
allMatch 检查是否匹配所有元素
anyMatch 检查是否至少匹配一个元素
noneMatch 检查是否没有匹配所有元素
findAny 返回第一个元素
count 返回当前流中的总个数
max 返回流中最大值
min 返回流中最小值5. 归约
reduce(T identity, BinaryOperator) / reduce(BinaryOperator) 可以将流中元素反复结合起来,得到一个值 ```java public void test(){ List
list = Arrays.asList(1,2,3,4,5,6,7,8,9,10); Integer sum = list.stream() .reduce(0,(x,y) -> x + y);
System.out.println(sum); }
/ 0 是起始值,将 0 放入 x,从流中取出 1 放入 y,运算完成之后得 1,再将运算后的的值 1 放入 x,以此类推 / ```
6. 收集
collect 将流转换为其他形式,接收一个 Collector 接口的实现,用于给 Stream 中元素做汇总的方法

