Java中for循環(huán)遍歷刪除操作方法
在Java中,有些場景需要遍歷集合中的元素,然后根據(jù)條件進(jìn)行刪除元素的操作。如果使用傳統(tǒng)的for循環(huán)遍歷方式來刪除元素,很可能出錯或發(fā)生意想不到的問題。推薦使用迭代器iterator完成
1. 推薦使用迭代器方式****刪除
阿里規(guī)約:【強(qiáng)制】不要在 foreach 循環(huán)里進(jìn)行元素的 remove/add 操作。remove 元素請使用 Iterator方式,如果并發(fā)操作,需要對 Iterator 對象加鎖。
@Test void testList2(){ List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if ("2".equals(item)) { iterator.remove(); } } System.out.println(list); }
2. 盡量不要使用for循環(huán)遍歷刪除,否則很可能出問題。
因為刪除元素后,數(shù)組元素發(fā)生前移,后續(xù)遍歷可能導(dǎo)致
數(shù)組訪問越界錯誤:元素減少,但是size()沒有變,(可改成for里使用list.size())
有元素沒遍歷到
@Test void testList(){ List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); for (String item : list) { if ("2".equals(item)) { list.remove(item); } } System.out.println(list); } //或 @Test void testList2(){ List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); int size = list.size(); for (int i=0; i<size; i++) { if ("2".equals(list.gei(i))) { list.remove(i); } } System.out.println(list); }
3. 如果非要使用這種的話,可以使用倒序遍歷刪除,這樣即使發(fā)生元素移動,不影響前面的元素
@Test void testList3(){ List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); for (int i=list.size()-1; i>=0; i--) { if ("2".equals(list.gei(i))) { list.remove(i); } } System.out.println(list); }
到此這篇關(guān)于Java中for循環(huán)遍歷刪除操作的文章就介紹到這了,更多相關(guān)java for循環(huán)刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Jackson來實現(xiàn)Java對象與JSON的相互轉(zhuǎn)換的教程
這篇文章主要介紹了使用Jackson來實現(xiàn)Java對象與JSON的互相轉(zhuǎn)換的教程,文中羅列了3中Jackson的使用方式,需要的朋友可以參考下2016-01-01SpringBoot實現(xiàn)分布式驗證碼登錄方案小結(jié)
驗證碼登錄作為一種有效的防護(hù)手段,可以防止惡意gongji、暴力pojie等,本文主要介紹了SpringBoot實現(xiàn)分布式驗證碼登錄方案小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-12-12SpringBoot CountDownLatch多任務(wù)并行處理的實現(xiàn)方法
本篇文章主要介紹了SpringBoot CountDownLatch多任務(wù)并行處理的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04詳解servlet的url-pattern匹配規(guī)則
本篇文章主要介紹了=servlet的url-pattern匹配規(guī)則,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容
這篇文章主要介紹了如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Java使用Curator進(jìn)行ZooKeeper操作的詳細(xì)教程
Apache Curator 是一個基于 ZooKeeper 的 Java 客戶端庫,它極大地簡化了使用 ZooKeeper 的開發(fā)工作,在分布式系統(tǒng)中,ZooKeeper 通常被用來作為協(xié)調(diào)服務(wù),而 Curator 則為我們提供了更簡潔易用的接口,本文將介紹 Curator 的核心功能及實踐樣例,需要的朋友可以參考下2025-04-04java 進(jìn)程是如何在Linux服務(wù)器上進(jìn)行內(nèi)存分配的
這篇文章主要介紹了java 進(jìn)程是如何在Linux服務(wù)器上進(jìn)行內(nèi)存分配的,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11