C 遍歷List並刪除某個或者幾個元素的方法

2022-06-24 13:54:14 字數 2767 閱讀 3509

c#遍歷list並刪除某個或者幾個元素的方法,你的第一反應使用什麼方法實現呢?foreach? for?

如果是foreach,那麼恭喜你,你答錯了。如果你想到的是用for,那麼你只是離成功進了一步。

正確的做法是用for倒序遍歷,根據條件刪除。下面我們用**來演示foreach,for刪除list資料的情況:

class program

public int age

public students(string name, int age)

}static void main(string args)

}

列印結果:tom  tang  tang  trista  lili1.先用foreach遍歷刪除姓名為tang的學生,**如下:

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

public int age

public students(string name, int age)

}static void main(string args)

}

列印結果:tom  tang  tang  trista  lili1.先用foreach遍歷刪除姓名為tang的學生,**如下:

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...