什么是Stream?
Stream(流)是一个来自数据源的元素队列并且支持聚合操作,元素流在管道中经过中间操作,最终操作得到结果。
数据源:集合,数组,I/O channel,产生器generator。
聚合操作:类似于sql比如:filter,find,map,match,sorted.
生成流:
-
stream() − 为集合创建串行流。
-
parallelStream() − 为集合创建并行流。
通过例子看方法:
list.stream().limit(10).sorted().forEach(System.out::println);
上面例子:取前10条》排序》循环输出
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
上面例子:将本身映射成本身的平方》去重》转化为list
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
上面例子:过滤掉空字符串》用”,“分割并进行合并
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
上面例子:利用到统计主要用于int ,double 等基本类型!
转化成基本类型》转换成统计类型》输出各种结果