java中for迴圈刪除集合陷阱

2021-08-11 01:22:31 字數 373 閱讀 4406

因為集合的

大小是動態變化

的,當你刪除乙個元素之後,元素中的序號又重新排列,原來第二個應該刪除的元素現在排在了第乙個元素的位置,真正刪除的卻是第三個元素,依次類推,刪除的是第乙個、第三個、第五個

解決辦法 

1.迭代器

iteratorit = list.iterator();

while(it.hasnext())

}

2.

究其原因是因為你要刪除的元素往前面移動了,而你的i儲存的值依舊往後走,所以如果讓i不往後走,往前走乙個,即可刪除本來排在第二個位置的元素現在排在了第乙個位置上的元素。

更改後的核心**:

for(int i=0;i

List迴圈刪除集合

目錄 for迴圈遍歷list 增強for迴圈遍歷list 迭代器iterator的remove方法 建立新的物件新增值 刪除後list大小發生變化,因此索引發生變化,所以刪除的元素不是你想要的 解決辦法 倒著遍歷list集合 public static void main string args s...

集合 使用for迴圈刪除

1.使用for迴圈遍歷集合進行刪除 public static void main string args system.out.println strlist 結果 b,d 檢視當前 結果 輸出為b,d 只刪除了兩個元素 迴圈了幾次 3次 第一次 i 0 集合長度 為4,集合為 a,b,c,d 移...

集合迴圈刪除元素的報錯

拋concurrentmodificationexception異常!foreach 寫法實際上是對的 iterable hasnext next 方法的簡寫。因此我們從list.iterator 著手分析,跟蹤 iterator 方法,該方法返回了 itr 迭代器物件。找到 list 的迭代器類 ...