目前基于java8,以后如果java11大众化了,就基于java11再来做
- 写这篇文章完全是为了跟scalas的流处理做比对,看java中的streamAPI做的怎么样。(个人认为java想把stream做好还是很难的)
- 前面写的一些可能会比较简单,主要还是为了先熟练java StreamAPI的基础使用
基础部分
由于java中的集合对象不能直接作流处理,因此所有的流处理都是通过Stream类完成的!因此java中的流处理基本步骤是
获取流 - 流操作 - 获取结果
当然有部分流操作是可以直接获取结果的
map
1.将Integer数组中的数字全部转为String,并作为List返回
List<String> collect =
Arrays.stream(nums) //获取流
.map(x -> x.toString()) //map:将所有元素转换为String类型
.collect(Collectors.toList()); //collect:获取结果,将Stream转换为List对象
reduce
2.计算Integer数组的所有元素的和
Integer[] nums = {6, 2, 9, 13, 1, 5, 10};
Integer integer = Arrays.stream(nums).reduce((x, y) -> x + y).get();
System.out.println(integer);
foreach
打印数组元素
Integer[] nums = {6, 2, 9, 13, 1, 5, 10};
Arrays.stream(nums).forEach(x->System.out.print(x+"\t"));
Arrays.stream(nums).forEach(System.out::println);//函数引用感觉在java8还不够成熟,尽量用lambda表达式!