在Java8中,出現了(le)stream流的(de)概念。我個(gè)人(rén)認爲,流的(de)使用(yòng)可(kě)以幫助我們更好的(de)對(duì)數據集合進行叠代。
下(xià)面,先簡單看一下(xià)普通(tōng)for循環和(hé)stream流的(de)代碼。
輸出結果:
[2, 4]
[2, 4]
可(kě)以看出,對(duì)于stream流的(de)使用(yòng),有時(shí)是可(kě)以簡化(huà)我們代碼的(de)複雜(zá)度,并且配合lambda表達式,可(kě)以讓代碼更加容易被人(rén)理(lǐ)解。
下(xià)面簡單介紹一下(xià)Java中stream流的(de)使用(yòng):
1.創建stream流
List集合創建創建:調用(yòng)List的(de)stream方法即可(kě),如 list.stream()
數組的(de)創建方式爲:通(tōng)過Arrays.stream()傳入數組即可(kě),如:Arrays.stream(new Integer[]{1,2})
注:stream流被創建出來(lái)之後隻能被使用(yòng)一次,如需再次循環需要再次創建!
2. 常用(yòng)方法介紹:
流的(de)方法被分(fēn)爲中間操作和(hé)終端操作,顧名思義,中間操作是指調用(yòng)方法後生成新的(de)流,可(kě)以繼續執行操作,而終端操作則是結束流的(de)使用(yòng)。
中間操作:
1.filter 過濾掉不符合的(de)數據
2.limit 隻取前x條數據
3.skip 跳過(删除)x條數據
4.distinct 去重複數據
5.sorted 排序
6.map 對(duì)數據重整,生成新的(de)數據流(如何從用(yòng)戶集合流中取出用(yòng)戶年齡作爲新的(de)流)
終端操作:
1.count 統計數據數量
2.forEach 對(duì)流中每個(gè)數據都執行傳入的(de)方法
3.anyMatch 至少一個(gè)匹配,返回bool
4.allMatch 匹配所有,返回bool
5.collect 可(kě)以傳入集合中的(de)常用(yòng)方法,例如:Collector.toList()将流轉回集合,Collector.groupingBy()将流中數據分(fēn)組
6.reduce 進行歸約操作,例如求和(hé)等
今天就先做(zuò)了(le)一下(xià)Java中stream流的(de)簡單使用(yòng)介紹,謝謝。
|