Stream(流)这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理
每个Stream都有两种模式: 顺序执行和并行执行。
当使用顺序方式去遍历时,每个item读完后再读下一个item。
而使用并行去遍历时,数组会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。
1.1 生成通常在集合或数组的基础上生成,语法.stream()和.parallelStream()
数组转化为流:Arrays.stream(数组名)
集合转化为流:list.stream()
int b= (int) Arrays.stream(strings).filter(s->!s.isEmpty()).count();1.2 流方法
int[] doubleNum = Arrays.stream(nums).map(i -> i * i).toArray();1.3 聚合
stream.collect() 的本质由三个参数构成,
- Supplier 生产者, 返回最终结果
- BiConsumer
accumulator 累加器
第一个参数是要返回的集合, 第二个参数是遍历过程中的每个元素,
将流中每个被遍历的元素添加到集合中 - BiConsumer
combiner 合并器, 在有并行流的时候才会有用, 一个流时代码不会走到这里
Collectors是一个工具类,是JDK预实现Collector的工具类
Collectors.groupingBy按返回值进行分类集合
- groupingBy 算子计算完以后,返回的是一个 Map
>
class Solution {
public List> groupAnagrams(String[] strs) {
return new ArrayList<>(Arrays.stream(strs).collect(Collectors.groupingBy(str -> {
char[] array = str.toCharArray();
Arrays.sort(array);
return new String(array);
})).values());
}
}
- 按集合返回Collectors.toCollection
Listll = list.stream().collect(Collectors.toCollection(LinkedList::new));
- 按数组返回Collectors.toList()
- 更多内容



