Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

目錄ide

Java8 Stream API 的不友好性優化

藉助 IntelliJ IDEA 來優化一下設計

2.1 新建 Stream Live Templates3d

2.2 順手把其餘經常使用的模板設置一下blog

Java8 Stream API 的不友好性字符串

Java8 自 2014 年 3 月發佈以來,已通過去不少個年頭了。在公司內部也已逐漸將全部的生產代碼遷移到這個版本。遷移中主要所作的工做就是將代碼庫更新爲 lambda 表達式,Stream 流和新的日期 API。另外還使用 Nashorn 動態編寫那些可能在運行時須要被更改的功能。it

除了 lambda 表達式外,最經常使用的一個功能就是新的 Stream API 了,它能夠被用來很方便地操做集合。此外,Stream 還能夠很大的提升集合操做相關代碼的可讀性。模板

可是,關於 Stream 流, 有一件事真的讓我很困擾!class

在使用 Stream 流時,相似reduce和findFirst這樣的終端操做,語義都是簡單明瞭,也很直接,咱們無需再額外傳參。效率

而另外一類咱們使用比較多的終端操做:collect用起來就很繁瑣了,如咱們要轉換成List的時候,咱們的寫法通常是這樣的:.collect(Collectors.toList())。

例如,下面這段代碼對字符串集合進行過濾,並轉成一個新的集合:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

又好比,咱們要轉換成Set的時候,須要寫成這樣:.collect(Collectors.toSet()),還有joining和groupingBy之類。

在我完成對 30 萬行代碼steam流的遷移後,我總結了一下,toList,toSet和groupingBy是咱們項目目前最經常使用的終端操做。我沒法理解 JDK 的設計者們爲何不對collect方法再簡化一下,以讓它更人性化一些,好比一樣的一段代碼,爲何不設計成下面這樣:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

由於沒有設計成這樣,致使咱們在代碼中不得不一遍又一遍地使用Collectors.toXXX, 這就煩躁了。

藉助IDEA優化一下

IntelliJ IDEA 號稱宇宙最智能 Java IDE, 看看咱們如何經過它來解決這個愁人的問題。

IntelliJ IDEA 附帶了一個名爲LiveTemplates(實時模板) 的便捷功能。這是個啥玩意?即便您還不知道它是什麼, 可是你也必定常用到它。好比輸入經常使用代碼段的快捷方式sout,IDEA 會插入代碼段System.out.println()。又好比,輸入psvm, IDEA 會快速幫您生成main方法等。

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

哦,就這玩意?

那要怎麼經過LiveTemplates(實時模板) 來解決前面提到的痛點呢?

1 新建 Stream Live Templates

1.按步驟打開File -> Setting -> Editor -> LiveTemplates:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

2.新建一個Template Group, 取名爲Stream:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

3.建立完成後,選中 Stream, 新建一個實時模板:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

4.建立一個toList代碼片斷模板:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

注意:代碼片斷的上下文選Java->other.

5.設置完成後,讓咱們在實戰中看下效果吧!

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

2 順手把其餘經常使用的模板設置一下

除了上面演示的toList外,toSet,groupingBy和join使用也至關廣泛,咱們也來設置一下,方法與上面大同小異,這裏就不一一貼圖了,貼上代碼片斷內容:
Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

PS: 特殊變量$END$用來在代碼片斷生成後,肯定光標位置,這樣你就能夠直接輸入相關代碼了,好比,定義join鏈接分隔符等。

模板都建立好了之後,截圖以下:

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

最後,咱們再來看看,join和groupBy的使用效果圖:
Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

Java8 Stream很差用?如何經過 IntelliJ IDEA 提高擼碼效率

相關文章
相關標籤/搜索