jdk8中forEach使用問題

2021-09-05 11:21:50 字數 701 閱讀 3762

實話說,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,讓操作分散在陣列各個元素上,把併發操作壓力分散,一遇到併發就擴容陣列,最後達到高效率。一...