Java模拟迭代器从集合中删除对象

jav*_*red 3 c#

在Java中,我可以使用http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html#remove()Iterator.remove()方法迭代集合并从中删除一些对象.

这非常自然而且很自然.就像你正在寻找冰箱里的食物,扔掉过期日期的食物.如何在c#中做同样的事情?

我希望iterateclean-up收集在同一个循环中.

有几个相关的问题,例如如何迭代和更新列表但是我仍然无法在c#中找到此操作的完全重复

Jon*_*eet 7

如果你正在使用List<T>,有一个方便的方法来执行此操作(RemoveAll),它将删除与谓词匹配的所有元素(表示为委托).例如:

List<Person> people = ...;
people.RemoveAll(person => person.Age < 18);
// Just the adults left now...
Run Code Online (Sandbox Code Playgroud)

这比向后迭代更简单,IMO.

当然,如果您乐意创建列表,可以使用LINQ:

var adults = people.Where(person => person.Age >= 18).ToList();
Run Code Online (Sandbox Code Playgroud)