控制台輸出結果: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回退一位。如下...