Stream的內(nèi)容很多析既,網(wǎng)上的總結(jié)文章也有很多疆柔,我今天不想寫(xiě)那么多
int[] intArray = { 5, 10, 21 };
List myList = Arrays.stream(intArray).boxed().collect(Collectors.toList());
把這兩行
代碼搞懂就結(jié)束
首先這是一個(gè)Java8的新特性供鸠,流操作
采用Stream 的 redure 方法 進(jìn)行數(shù)值歸約操作會(huì)涉及到基本數(shù)值類型和引用數(shù)值類型之間的裝箱、拆箱操作告希,因此效率較低;
當(dāng)流操作為純數(shù)值操作時(shí)烧给,使用數(shù)值流能獲得較高的效率暂雹;
因此StreamAPI提供了三種數(shù)值流:IntStream、DoubleStream创夜、LongStream杭跪;
IntStream intStream = Arrays.stream(new int[]{ 1, 2, 3 });
所以呢 Arrays.stream(intArray) 相當(dāng)于將Stream轉(zhuǎn)化為IntStream
boxed是用來(lái)將數(shù)值流再轉(zhuǎn)化為Stream
collect也就是收集器,是Stream一種通用的驰吓、從流生成復(fù)雜值的結(jié)構(gòu)涧尿。只要將它傳給collect方法,也就是所謂的轉(zhuǎn)換方法檬贰,其就會(huì)生成想要的數(shù)據(jù)結(jié)構(gòu)(List姑廉,map,set等)翁涤。這里不得不提下桥言,Collectors這個(gè)工具庫(kù),在該庫(kù)中封裝了相應(yīng)的轉(zhuǎn)換方法葵礼。當(dāng)然号阿,Collectors工具庫(kù)僅僅封裝了常用的一些情景,如果有特殊需求鸳粉,那就要自定義了
轉(zhuǎn)一篇寫(xiě)的不錯(cuò)的文章
https://blog.csdn.net/IO_Field/article/details/54971608
https://irusist.github.io/2016/01/04/Java-8%E4%B9%8BCollector/