av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Java集合類ArrayList循環(huán)中刪除特定元素

在項目開發(fā)中,我們可能往往需要動態(tài)的刪除ArrayList中的一些元素。

一種錯誤的方式:

 
 
 
  1. for(int i = 0 , len= list.size();i
  2.  
  3.   if(list.get(i)==XXX){  
  4.  
  5.        list.remove(i);  
  6.  
  7.   }  
  8.  

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

 
 
 
  1. Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 
  2.     at java.util.ArrayList.RangeCheck(Unknown Source)  
  3.     at java.util.ArrayList.get(Unknown Source)  
  4.     at ListDemo.main(ListDemo.java:20) 

因為你刪除了元素,但是未改變迭代的下標,這樣當?shù)阶詈笠粋€的時候就會拋異???/p>

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

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

上面的代碼就正確了。

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

List接口內(nèi)部實現(xiàn)了Iterator接口,提供開發(fā)者一個iterator()得到當前l(fā)ist對象的一個iterator對象。

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

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

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

查看ArrayList源碼會發(fā)現(xiàn)很多方法內(nèi)部都是基于iterator接口實現(xiàn)的,所以推薦使用第二種方案。


文章名稱:Java集合類ArrayList循環(huán)中刪除特定元素
文章起源:http://uogjgqi.cn/article/cdhcecp.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流