Stream的内容很多,网上的总结文章也有很多,我今天不想写那么多
int[] intArray = { 5, 10, 21 };
List myList = Arrays.stream(intArray).boxed().collect(Collectors.toList());
把这两行
代码搞懂就结束
首先这是一个Java8的新特性,流操作
采用Stream 的 redure 方法 进行数值归约操作会涉及到基本数值类型和引用数值类型之间的装箱、拆箱操作,因此效率较低;
当流操作为纯数值操作时,使用数值流能获得较高的效率;
因此StreamAPI提供了三种数值流:IntStream、DoubleStream、LongStream;
IntStream intStream = Arrays.stream(new int[]{ 1, 2, 3 });
所以呢 Arrays.stream(intArray) 相当于将Stream转化为IntStream
boxed是用来将数值流再转化为Stream
collect也就是收集器,是Stream一种通用的、从流生成复杂值的结构。只要将它传给collect方法,也就是所谓的转换方法,其就会生成想要的数据结构(List,map,set等)。这里不得不提下,Collectors这个工具库,在该库中封装了相应的转换方法。当然,Collectors工具库仅仅封装了常用的一些情景,如果有特殊需求,那就要自定义了
转一篇写的不错的文章
https://blog.csdn.net/IO_Field/article/details/54971608
https://irusist.github.io/2016/01/04/Java-8%E4%B9%8BCollector/