List迴圈刪除集合

2021-08-27 18:27:03 字數 905 閱讀 7968

目錄

for迴圈遍歷list:

增強for迴圈遍歷list:

迭代器iterator的remove方法:

建立新的物件新增值

刪除後list大小發生變化,因此索引發生變化,所以刪除的元素不是你想要的

解決辦法:

①倒著遍歷list集合;

public static void main(string args) 

system.out.println(list);

}

②修改索引值

public static void main(string args) 

system.out.println(list);

}

刪除後報錯concurrentmodificationexception(

解決辦法:刪除完成後直接break,

原因:foreach方法遍歷遍歷元素的時候生成迭代器iterator,再生成iterator的時候,會儲存乙個expectedmodcount引數,這是生成迭代器時list修改的次數,如果刪除的話,modcount和exceptedmodcount不一致)

public static void main(string args) 

system.out.println(list);

}

直接刪除(原因:給exceptedmodcount重新複製)

listnewlist = new arraylist<>();

//不滿足條件的過濾,滿足條件的新增到新的list中

迴圈list刪除自己本身的集合

控制台輸出結果 a,b,b,c 有兩個2沒有刪除掉 這是因為當i 1時,滿足條件執行刪除操作,會移除第乙個b,接著第二個b會前移到第乙個b的位置,即游標1對應的是第二個b。接著遍歷i 2,也就跳過第二個b。list templist new list for int i templist.count...

C 迴圈list刪除自己本身的集合

如果從頭到尾正序遍歷刪除的話,有些符合刪除條件的元素會成為漏網之魚 正序刪除舉例 list string templist newlist string for int i 0 i templist.count i templist.foreach p 控制台輸出結果 a,b,b,c 有兩個2沒有刪...

List 集合 刪除指定行

不多說,直接上 public class name 刪除值為name2的行 static void main string args nlist.add n console.writeline var someone name2 for int i 0 i nlist.count i for int...