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

2022-07-13 08:33:11 字數 741 閱讀 9537

控制台輸出結果:a,b,b,c

有兩個2沒有刪除掉;

這是因為當i=1時,滿足條件執行刪除操作,會移除第乙個b,接著第二個b會前移到第乙個b的位置,即游標1對應的是第二個b。

接著遍歷i=2,也就跳過第二個b。

list templist = new list() ;

for (int i = templist.count-1; i>=0; i--)

}templist.foreach(p => );

控制台輸出結果:a,c,

這次刪除了所有的b;

使用遞迴,每次刪除以後都從新foreach,就不存在這個問題了;

static void main(string args)

;removetest(templist);

templist.foreach(p => );

}static void removetest(list list)}}

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

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

List迴圈刪除集合

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

如何在迴圈中刪除List集合中的元素

一 首先是最基本的for迴圈 for int i 0 iremove 方法刪除元素後會立刻更新list的size,因此index也發生了變化,會導致漏掉某些元素。解決辦法1 在刪除某乙個元素後直接break,當然這種情況只適合刪除乙個特定元素,不適合刪除多個元素。解決辦法2 index回退一位。如下...