Map 使用 Lambda 的 forEach 實(shí)現(xiàn)跳出循環(huán)操作_第1頁(yè)
Map 使用 Lambda 的 forEach 實(shí)現(xiàn)跳出循環(huán)操作_第2頁(yè)
Map 使用 Lambda 的 forEach 實(shí)現(xiàn)跳出循環(huán)操作_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Map使用Lambda的forEach實(shí)現(xiàn)跳出循環(huán)操作本來(lái)是要在找到包含了"3"的值之后終止循環(huán)的,結(jié)果break編譯錯(cuò)誤.只好用return試試,神奇的事情發(fā)生了,并沒(méi)有跳出循環(huán),return在這里起到了continue的效果.為什么呢---因?yàn)?)-{}其實(shí)是匿名內(nèi)部類(lèi),匿名內(nèi)部類(lèi)如何能使用break和continue呢,當(dāng)然編譯錯(cuò)誤啊.在匿名內(nèi)部類(lèi)里面return了也僅僅是匿名內(nèi)部類(lèi)的調(diào)用終止,for循環(huán)繼續(xù)下一次循環(huán)而已.所以,無(wú)奈之下,只能曲線救國(guó)了---使用

anyMatch

booleanresult=map.entrySet().stream().anyMatch(e-e.getValue().contains("3"));

if(result){

System.out.println("找到你了呦......");

}

補(bǔ)充知識(shí):java8lambdaforEach循環(huán)與增強(qiáng)for循環(huán)性能對(duì)比

最近新的項(xiàng)目使用jdk1.8版本,于是乎博主想多使用一些lambda的寫(xiě)法,但是對(duì)于lambda并不是很了解所以在網(wǎng)上查了一些性能方面的資料,結(jié)果瞬間心涼,多數(shù)回答為lambdaforEach循環(huán)性能要比傳統(tǒng)循環(huán)差,性能甚至差出十幾倍。然而,經(jīng)過(guò)博主的測(cè)試那些回答是錯(cuò)誤的。

性能對(duì)比的結(jié)論為lambdaforEach增強(qiáng)for,以下給出測(cè)試數(shù)據(jù)。

publicstaticvoidmain(String[]args){

test1();

publicstaticvoidtest1(){

ListUseruserList=initList(10000);

for(inti=1;ii++){

System.out.println("--------------------第"+i+"次");

longt1=System.nanoTime();

testLambda(userList);

longt2=System.nanoTime();

testForeach(userList);

longt3=System.nanoTime();

System.out.println("lambda---"+(t2-t1)/1000+"μs");

System.out.println("增強(qiáng)for--"+(t3-t2)/1000+"μs");

publicstaticvoidtest2(){

ListUseruserList=initList(10000);

longt1=System.nanoTime();

testLambda(userList);

longt2=System.nanoTime();

testForeach(userList);

longt3=System.nanoTime();

testLambda1(userList);

longt4=System.nanoTime();

System.out.println("lambda---"+(t2-t1)/1000+"μs");

System.out.println("增強(qiáng)for--"+(t3-t2)/1000+"μs");

System.out.println("lambda1---"+(t4-t3)/1000+"μs");

*增強(qiáng)for測(cè)試

*@paramuserList

privatestaticvoidtestForeach(ListUseruserList){

for(Useruser:userList){

user.hashCode();

*lambdaforEach測(cè)試

*@paramuserList

privatestaticvoidtestLambda(ListUseruserList){

userList.forEach(user-user.hashCode());

privatestaticvoidtestLambda1(ListUseruserList){

userList.forEach(user-user.hashCode());

*初始化測(cè)試集合

*@paramsize

*@return

privatestaticListUserinitList(intsize){

ListUseruserList=ne

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論