91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA遍歷List集合,刪除數據時出現問題怎么辦

發布時間:2020-07-16 13:42:03 來源:億速云 閱讀:177 作者:小豬 欄目:開發技術

小編這次要給大家分享的是JAVA遍歷List集合,刪除數據時出現問題怎么辦,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

一、問題描述

有時候,我們會遇到在遍歷List集合的過程中刪除數據的情況。

看著自己寫的代碼,感覺完全沒有問題,但就是達不到預期的效果,這是為什么呢?下面我們來分析下

String str1 = new String("1"); 
String str2 = new String("2"); 
String str3 = new String("3"); 
String str4 = new String("4"); 
String str5 = new String("5"); 
List list = new ArrayList(); 
list.add(str1); 
list.add(str2); 
list.add(str3); 
list.add(str4); 
list.add(str5); 
System.out.println("list.size()=" + list.size());     
 
for (int i = 0; i < list.size(); i++) {        
    list.remove(i);      
  // i--; 
  //System.out.println(i+" "+list.get(i)+" "); 
}     
System.out.println("after remove:list.size()=" + list.size());

本來預期結果應該是:

list.size()=5 
after remove:list.size()=0 

但實際上結果卻是:

list.size()=5 
after remove:list.size()=2

原因如下: List每remove掉一個元素以后,后面的元素都會向前移動 ,此時如果執行i++,則剛剛移過來的元素沒有被讀取。

分析:

  • List中有5條數據,需要循環5次,
  • 第一次數據為:1 2 3 4 5
  • 執行完remove(0) 后,數據為 2 3 4 5  , i=1
  • 第二次數據為:2 3 4 5
  • 執行完remove(1) 后,數據為 2 4 5  , i=2
  • 第三次數據為:2 4 5
  • 執行完remove(2) 后,數據為 2 4  , i=3
  • 此時如果加上上面注釋的代碼 System.out.println(i+" "+list.get(i)+" "); 循環第4、5次時就會出現異常
     

二、解決方法

解決方法1:每移過一次后,再把 i 移回來

for (int i = 0; i < list.size(); i++) {        
  list.remove(i);      
  i--;       
}

解決方法2:先刪除后面的元素

for (int i = list.size()-1; i >= 0; i--) { list.remove(i); }

解決方法3:使用iterator刪除

for(Iterator it = list.iterator();it.hasNext();){       
  it.remove(); 
}

看完這篇關于JAVA遍歷List集合,刪除數據時出現問題怎么辦的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇巴县| 民乐县| 芦山县| 罗甸县| 化州市| 华蓥市| 尉犁县| 徐水县| 思南县| 天峨县| 大港区| 苏州市| 华蓥市| 镇平县| 南宫市| 监利县| 阿拉尔市| 沭阳县| 盐源县| 清河县| 穆棱市| 公安县| 阿勒泰市| 彰武县| 巴里| 锡林浩特市| 长武县| 铁岭县| 临潭县| 小金县| 曲靖市| 二连浩特市| 教育| 河北省| 布拖县| 柘城县| SHOW| 咸丰县| 城市| 鹤壁市| 秀山|