本章節(jié)介紹了stream 特性。stream 也是java8的新特性,可以簡化串行或并發(fā)的大批量操作格嘁。
書中提到要销,過度使用stream或使用不當(dāng)會造成可讀性,不過可能因為stream 在平時的開發(fā)中應(yīng)用的比較多晴叨,我在讀書中的stream 方法時,感覺使用了stream 的代碼可讀性更好一些。個人感覺在命名合理的前提下捞挥,stream 可讀性還是更好的,代碼也更加優(yōu)雅一些忧吟。
使用stream 的注意點砌函。
適合使用stream 的場景:
1.統(tǒng)一轉(zhuǎn)換元素的序列
2.過濾元素的序列
3.利用單個操作(如添加、連接或者計算其最小值)合并元素的順序
4.將元素的序列放到一個集合中溜族,比如根據(jù)某些公共屬性進行分組
5.收縮滿足某些條件的元素的序列不適合使用stream 的場景:
1.需要修改局部變量讹俊。lambda只能讀取final變量。
2.需要從外圍方法中return 煌抒、 break仍劈、continue外圍循環(huán),或拋出該方法聲明要拋出的受檢異常寡壮。其他注意點:
盡量避免使用Stream處理char值贩疙。 因為chars()返回的是int讹弯,如果使用stream 處理char, 必須強制轉(zhuǎn)換。
stream 和 迭代 都可以實現(xiàn)功能这溅,個人認為stream 用法更加簡潔易懂组民,鏈?zhǔn)秸{(diào)用的代碼也更加優(yōu)雅。
不過書中給到雙重循環(huán)用stream 來實現(xiàn)的例子讓我想到芍躏,如果只是迭代的話邪乍,使用迭代會比stream 稍微快一點。因為省去了一個轉(zhuǎn)換成stream 對象的過程对竣。
如下面這段代碼(當(dāng)然不會真的有人stream().foreach庇楞, 只是想說明轉(zhuǎn)成stream 對象時會多花一點時間),編譯器都會提示可以直接使用stream。