作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
<分区>
我需要遍历 List<myObject>
并删除满足特定条件的项目。
我看到了这个答案(https://stackoverflow.com/a/1582317/5077434):
Iterate your list in reverse with a for loop:
for (int i = safePendingList.Count - 1; i >= 0; i--)
{
// some code
// safePendingList.RemoveAt(i);
}Example:
var list = new List<int>(Enumerable.Range(1, 10));
for (int i = list.Count - 1; i >= 0; i--)
{
if (list[i] > 5)
list.RemoveAt(i);
}
list.ForEach(i => Console.WriteLine(i));
但我明白for
效率低于 foreach
,
所以我想到了使用后者如下:
foreach (var item in myList.ToList())
{
// if certain condition applies:
myList.Remove(item)
}
一种方法比另一种更好吗?
编辑:
我不想使用 RemoveAll(...)
,因为循环内有大量代码,先于条件。
我是一名优秀的程序员,十分优秀!