很多時候,為了方便完成某些功能,大家是挖空心思地去使用一些技巧,讓我們的代碼更直白美觀,下面為大家分享幾個Java當中的技巧。
使用stream實現list轉map
普通:對于list轉map很多時候大家都使用遍歷,然后取出值,放入結果中,如下

神技:使用stream實現,通過Collectors.groupingBy

stream有很多非常直觀和好用的方法,例如sum,count,distinct等等
減少非空判斷,優雅地使用Objects工具
通常操作的時候使用!=null去做判斷,比較不優雅

jdk1.7提供了Objects工具,使用直觀方便,很多方法中幫我們做了非空判斷,減少!=null的代碼

隨機數可以使用種子,保證隨機規律
有時候為了保存一個固定的值,往往還需要存數據庫或者文件,非常麻煩,我們可以通過特定的值,來通過隨機數的種子來計算特定的值。
例如第二個print出來的5次循環的值,必然相等。只需要保證seed的值固定,隨機數算出的值必然固定。
雙大括號語法
很多時候,需要初始化一些list的數據,如果像下面操作,會顯得繁瑣
神技:使用{{}}語法,如下
注意:很多同學提到此處有問題,不建議程序大量這樣使用,由于該方法是匿名內部類初始化方法,會產生很多xxx$1.class,xxx$2.class……的類,會存在內存泄露問題。
特殊場景需要用到的goto
大家都知道java是沒有goto語法的,但提供了類似goto語法效果的方法,如下
try-with-resource自動關閉資源
JVM對外部資源的引用卻無法自動回收,例如數據庫連接,網絡連接以及輸入輸出IO流等,這些連接就需要我們手動去關閉,不然會導致外部資源泄露,連接池溢出以及文件被異常占用等。
因此在IO操作中,我們常常需要寫如下的代碼,進行手動釋放資源

jdk1.7給我們提供了try-with-resource語法,讓我們再也不用在finally中調用close方法了,jvm自動調用。

通過MultiValueMap去構建Map
如果需要構建Map
