實話說,jdk8出來好久了,公司一直用的還是jdk7,沒有公升級,最近終於公升級到jdk8了,所以來自己改改**,使用jdk8中的新特性,最簡單的foreach先來試試
測試**如下:
public static void testjdk8foreach()
} //2 jdk8 foreach
aslist.foreach(s ->
});system.out.println(i);
//3 jdk8 stream
long count = aslist.stream().filter(s -> s.equalsignorecase("a")).count();
system.out.println(count);
}
首先foreach 的確很好用,配合lambda表示式,遍歷起來很方便。
但是對於上述**中的//2 提示 變數i 應該final修飾,或者 實際的final效果,也就是內容部不可變。其實可以理解,lambda 實際上 是 匿名內部類的一種特殊用法 所以 這樣寫 肯定有final問題。
其實 //2 就是 //1 中的改進方法而已, jdk8中的foreach本來就是對jdk7中的for的更好的封裝,但是對於上述需求,jdk8中的foreach 很明顯不能滿足要求。
說到底,改進是很好的,但是還是看具體的需求,各取所需吧,配合使用
JDK8中Optional的方法使用
1.optional.of 或者optional.ofnullable 建立optional物件,差別在於of不允許引數是null,而ofnullable則無限制。test public void testoptional 2.ispresent 判斷值是否存在 ispresent判斷值是否存在 s...
jdk8中使用toMap主鍵衝突
開始行動,你已經成功一半了,獻給正在奮鬥的我們 今天線上產品經理新增了乙個需求,其中我做了乙個操作,將乙個集合使用jdk8分解成乙個map,結果丟擲了異常,是因為map的鍵衝突了,那我我們就想了,如果我們想保留其中乙個而不是直接丟擲異常該怎麼做呢?原 如下 map collect1 attendan...
JDK8中的鎖優化
參考 longadder 類似automiclong,但是提供了 熱點分離 過程如下 如果併發不激烈,則與automiclong 一樣,cas賦值。如果出現併發操作,則使用陣列,陣列的各元素之和為真實value,讓操作分散在陣列各個元素上,把併發操作壓力分散,一遇到併發就擴容陣列,最後達到高效率。一...