title: 通過IntelliJ IDEA 2016.3 來更好使用Java 8的Stream API
categories: 基礎(chǔ)
tags: Java 8
keywords: Java 8 Streams IDEA
本文展示了IntelliJ IDEA如何幫助編寫正確的和培養(yǎng)使用Java 8的習(xí)慣,版本使用IntelliJ IDEA 2016.3, 通過擴(kuò)展了IDEA現(xiàn)有的檢查以支持這些的案例。
現(xiàn)在,如果在上面定義的局部變量的循環(huán)遞增中單擊Alt + Enter,IDE將提示您使用以count()結(jié)尾的一系列steam的鏈?zhǔn)?API調(diào)用來替換它。 注意,如果循環(huán)是嵌套的,IDE將使用flatMap():

如果變量從另一個(gè)方法返回的數(shù)字增加,IDE將使用mapToInt()/ mapToLong()/ mapToDouble():

如果循環(huán)將非原始對象添加到集合中,而不是遞增變量,IDE將用以collect()結(jié)尾的調(diào)用鏈替換它:

如果要添加到集合的對象是另一種方法的結(jié)果,IDE將使用map()以慣用的方式處理它:

這些檢查所支持的代碼細(xì)節(jié)多么? 相當(dāng)多。 考慮一個(gè)大量使用continue語句的循環(huán):

與continue類似,IDE也將使用anyMatch()正確處理返回語句:

如果您決定使用這些檢查,請務(wù)必調(diào)整默認(rèn)代碼樣式設(shè)置,以避免超過長方法鏈的右邊距。 在此,你有一個(gè)選擇,根據(jù)你的喜好來設(shè)置。
- 下拉鏈(Chop down chain)方法調(diào)用如果它們很長(最適合Java 8)

- 包裝方法( Wrap method )參數(shù)調(diào)用

目前我們正在考慮更改這些默認(rèn)值。
默認(rèn)情況下啟用檢查,但其檢查級別設(shè)置為最小 - 這意味著沒有警告。 這是IntelliJ IDEA 2016的另一個(gè)新功能。
您可以在“設(shè)置”中更改任何檢查的級別:

如果需要,您可以在你選擇的范圍上以批處理模式來應(yīng)用這些檢查:

我們希望新的檢查將幫助并使你的Java 8代碼寫更加得心應(yīng)手,并充分利用stream API。 那些不熟悉stream API的人,請務(wù)必閱讀Oracle的教程:第1部分和第2部分。
最后但并非最不重要的,IDEA還在努力改進(jìn)VCS Log的布局:

- 提交詳細(xì)信息已移至右側(cè),為日志本身提供了更多空間。
- 表中的提交消息現(xiàn)在對齊,因此更易讀。
關(guān)于Java 8 Stream API 的使用,請參考本人的博文:
更多干貨內(nèi)容請關(guān)注:極樂科技