java集合類arraylist循環(huán)中刪除特定元素的方法
在項(xiàng)目開(kāi)發(fā)中,我們可能往往需要?jiǎng)討B(tài)的刪除ArrayList中的一些元素。
一種錯(cuò)誤的方式:
<pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } }
上面這種方式會(huì)拋出如下異常:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 at java.util.ArrayList.RangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at ListDemo.main(ListDemo.java:20)
因?yàn)槟銊h除了元素,但是未改變迭代的下標(biāo),這樣當(dāng)?shù)阶詈笠粋€(gè)的時(shí)候就會(huì)拋異???/p>
可以對(duì)上面的程序進(jìn)行如下改進(jìn):
for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); --len;//減少一個(gè) } }
上面的代碼就正確了。
下面我們?cè)俳榻B一種方案:
List接口內(nèi)部實(shí)現(xiàn)了Iterator接口,提供開(kāi)發(fā)者一個(gè)iterator()得到當(dāng)前l(fā)ist對(duì)象的一個(gè)iterator對(duì)象。
Iterator<String> sListIterator = list.iterator(); while(sListIterator.hasNext()){ String e = sListIterator.next(); if(e.equals("3")){ sListIterator.remove(); } }
上面這種也是正確的,并推薦使用第二種方案。
兩種方案實(shí)現(xiàn)原理都差多的,第二種只是jdk封裝了下。
查看ArrayList源碼會(huì)發(fā)現(xiàn)很多方法內(nèi)部都是基于iterator接口實(shí)現(xiàn)的,所以推薦使用第二種方案。
以上就是小編為大家?guī)?lái)的java集合類arraylist循環(huán)中刪除特定元素的方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
java求數(shù)組元素重復(fù)次數(shù)和java字符串比較大小示例
這篇文章主要介紹了java求數(shù)組元素重復(fù)次數(shù)和java字符串比較大小示例,需要的朋友可以參考下2014-04-04解析Java編程中對(duì)于包結(jié)構(gòu)的命名和訪問(wèn)
這篇文章主要介紹了Java編程中對(duì)于包結(jié)構(gòu)的命名和訪問(wèn),是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-12-12微信公眾號(hào)模板消息接口開(kāi)發(fā)Java實(shí)現(xiàn)方法代碼
這篇文章主要介紹了微信公眾號(hào)模板消息接口開(kāi)發(fā)Java實(shí)現(xiàn)的相關(guān)資料,,該接口可以用于向關(guān)注公眾號(hào)的用戶推送消息,包括群發(fā)和指定用戶發(fā)送消息,文章詳細(xì)介紹了如何獲取公眾號(hào)的測(cè)試信息、配置接口信息和獲取access_token,需要的朋友可以參考下2024-12-12IDEA Maven源修改為國(guó)內(nèi)阿里云鏡像的正確方式
為了加快 Maven 依賴的下載速度,可以將 Maven 的中央倉(cāng)庫(kù)源修改為國(guó)內(nèi)的鏡像,比如阿里云鏡像,以下是如何在 IntelliJ IDEA 中將 Maven 源修改為阿里云鏡像的詳細(xì)步驟,感興趣的同學(xué)可以參考閱讀一下2024-09-09AJAX Servlet實(shí)現(xiàn)數(shù)據(jù)異步交互的方法
本篇文章主要介紹了AJAX Servlet實(shí)現(xiàn)數(shù)據(jù)異步交互的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07springmvc?html資源請(qǐng)求404的問(wèn)題解決并分析
這篇文章主要介紹了springmvc?html資源請(qǐng)求404的問(wèn)題解決并分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09