c#遍歷list並刪除某個或者幾個元素的方法,你的第一反應使用什麼方法實現呢?foreach? for?
如果是foreach,那麼恭喜你,你答錯了。如果你想到的是用for,那麼你只是離成功進了一步。
正確的做法是用for倒序遍歷,根據條件刪除。下面我們用**來演示foreach,for刪除list資料的情況:
class program列印結果:tom tang tang trista lili1.先用foreach遍歷刪除姓名為tang的學生,**如下:public int age
public students(string name, int age)
}static void main(string args)
}
foreach (var stu in stulist)會報如下錯誤:
因為在foreach中刪除元素時,每一次刪除都會導致集合的大小和元素索引值發生變化,從需導致在foreach中刪除元素會出現異常。
2.用for正序遍歷刪除,**如下:
//列印姓名結果:console.write("刪除前:");
foreach (var stu in stulist)
console.write(stu.name + " ");
//刪除姓名為tang的學生
for (int i=0;i< stulist.count;i++)
//列印姓名
console.write("\n刪除後:");
foreach (var stu in stulist)
console.write(stu.name + " ");
只刪除了乙個姓名為tang的學生。為什麼會出現這種情況呢?
這是因為當i=1時,滿足條件執行刪除操作,會移除第乙個tang,接著第二個tang會前移到第乙個tang的位置,即游標1對應的是第二個tang。
接著遍歷i=2,也就跳過第二個tang。
3.用for倒序遍歷刪除,**如下:
for (int i = stulist.count-1; i>=0; i--)結果:
這時刪除了全部姓名為tang的學生。
c#遍歷list並刪除某個或者幾個元素的方法,你的第一反應使用什麼方法實現呢?foreach? for?
如果是foreach,那麼恭喜你,你答錯了。如果你想到的是用for,那麼你只是離成功進了一步。
正確的做法是用for倒序遍歷,根據條件刪除。下面我們用**來演示foreach,for刪除list資料的情況:
class program列印結果:tom tang tang trista lili1.先用foreach遍歷刪除姓名為tang的學生,**如下:public int age
public students(string name, int age)
}static void main(string args)
}
foreach (var stu in stulist)會報如下錯誤:
因為在foreach中刪除元素時,每一次刪除都會導致集合的大小和元素索引值發生變化,從需導致在foreach中刪除元素會出現異常。
2.用for正序遍歷刪除,**如下:
//列印姓名結果:console.write("刪除前:");
foreach (var stu in stulist)
console.write(stu.name + " ");
//刪除姓名為tang的學生
for (int i=0;i< stulist.count;i++)
//列印姓名
console.write("\n刪除後:");
foreach (var stu in stulist)
console.write(stu.name + " ");
只刪除了乙個姓名為tang的學生。為什麼會出現這種情況呢?
這是因為當i=1時,滿足條件執行刪除操作,會移除第乙個tang,接著第二個tang會前移到第乙個tang的位置,即游標1對應的是第二個tang。
接著遍歷i=2,也就跳過第二個tang。
3.用for倒序遍歷刪除,**如下:
for (int i = stulist.count-1; i>=0; i--)結果:
這時刪除了全部姓名為tang的學生。
遍歷刪除List中的元素
使用iterator的方式可以順利刪除和遍歷 正確方式 public void iteratorremove system.out.println students 使用增強的for迴圈 錯誤方式 在迴圈過程中從list中刪除非基本資料型別以後,繼續迴圈list時會報concurrentmodifi...
List的遍歷和刪除元素
遍歷list的方法 param args public static void main string args 索引值 i 遞減 優點 可以獲取索引值 可以刪除元素 system.out.println 1.for迴圈 1.2 索引值 i 遞減 for int i list.size 1 i 0 ...
std map的安全遍歷並刪除元素的方法
首先我們講遍歷std map,大部分人都能寫出第一種遍歷的方法,但這種遍歷刪除的方式並不太安全。第一種 for迴圈變數 include include includeusing namespace std int main return 0 結果如下 key 0 value 555555555555...