国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java集合類arraylist循環中刪除特定元素的方法

2019-11-26 13:34:58
字體:
來源:轉載
供稿:網友

在項目開發中,我們可能往往需要動態的刪除ArrayList中的一些元素。

一種錯誤的方式:

<pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){   if(list.get(i)==XXX){      list.remove(i);   }  }

 上面這種方式會拋出如下異常:

 

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) 

 因為你刪除了元素,但是未改變迭代的下標,這樣當迭代到最后一個的時候就會拋異常咯。

可以對上面的程序進行如下改進:

for(int i = 0 , len= list.size();i<len;++i){   if(list.get(i)==XXX){      list.remove(i);     --len;//減少一個  }  }

上面的代碼就正確了。

下面我們再介紹一種方案:

List接口內部實現了Iterator接口,提供開發者一個iterator()得到當前list對象的一個iterator對象。

Iterator<String> sListIterator = list.iterator(); while(sListIterator.hasNext()){   String e = sListIterator.next();   if(e.equals("3")){   sListIterator.remove();   } }

上面這種也是正確的,并推薦使用第二種方案。

兩種方案實現原理都差多的,第二種只是jdk封裝了下。

查看ArrayList源碼會發現很多方法內部都是基于iterator接口實現的,所以推薦使用第二種方案。

以上就是小編為大家帶來的java集合類arraylist循環中刪除特定元素的方法全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西青区| 新巴尔虎左旗| 辽中县| 固阳县| 安庆市| 大田县| 海淀区| 蓬安县| 和顺县| 通州市| 大庆市| 襄汾县| 广水市| 云梦县| 安远县| 江西省| 博乐市| 陆良县| 界首市| 彰化县| 故城县| 荥经县| 凤阳县| 二连浩特市| 新泰市| 临桂县| 南乐县| 常宁市| 万州区| 广西| 武汉市| 奇台县| 新野县| 昌乐县| 怀来县| 敦化市| 阳江市| 漠河县| 文化| 宜宾县| 哈尔滨市|