一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|

服務器之家 - 編程語言 - JAVA教程 - java集合類arraylist循環中刪除特定元素的方法

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

2020-07-04 10:27jingxian JAVA教程

下面小編就為大家帶來一篇Java集合類ArrayList循環中刪除特定元素的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

一種錯誤的方式:

java" id="highlighter_670858">
?
1
2
3
4
5
6
7
8
9
<pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){
 
 if(list.get(i)==XXX){
 
    list.remove(i);
 
 }
 
}

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

 

?
1
2
3
4
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)

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

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

?
1
2
3
4
5
6
7
8
9
for(int i = 0 , len= list.size();i<len;++i){
 
 if(list.get(i)==XXX){
 
    list.remove(i);
    --len;//減少一個
 }
 
}

上面的代碼就正確了。

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

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

?
1
2
3
4
5
6
7
Iterator<String> sListIterator = list.iterator();
while(sListIterator.hasNext()){
  String e = sListIterator.next();
  if(e.equals("3")){
  sListIterator.remove();
  }
}

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97久久天天综合色天天综合色hd | 亚洲精品国精品久久99热 | 国产高清露脸学生在线观看 | 欧美在线视频一区二区 | 忘忧草在线社区WWW日本直播 | 日韩欧美中文字幕一区二区三区 | 日本中文字幕一区二区有码在线 | 国产香蕉一区二区在线网站 | 古代翁熄乩伦小说h | 波多野结衣被绝伦强在线观看 | 午夜A级理论片左线播放 | 超级碰碰免费视频 | 无码毛片内射白浆视频 | 国产成人免费在线视频 | 精品久久亚洲 | 99精品久久99久久久久久 | 黄色a视频 | 国产精品资源在线观看网站 | 性色AV一区二区三区V视界影院 | 明星ai智能人脸替换造梦在线播放 | 星星动漫在线观看无删减 | 四色6677最新永久网站 | 国产精品久久香蕉免费播放 | 果冻传媒在线完整免费观 | 亚洲男男video | 欧美骚熟 | 亚欧日韩 | 热巴在公交车h文 | 波多野结衣无码 | 黄网久久 | 456老汉gay| 国产成人一区二区三区在线视频 | 挺进白嫩老师下面视频 | 国内精品久久久久香蕉 | 国产色司机在线视频免费观看 | 四虎在线最新永久免费 | 韩国男女做性全过程视频 | 亚洲国产精品日本无码网站 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 | 国产欧美一区二区精品性色99 | 国产亚洲一欧美一区二区三区 |