删除 List<T>
中的备用(奇数索引或偶数索引)元素的最有效方法是什么?不使用占位符列表变量?
此外,如果您能在每个答案中提及费用,我们将不胜感激。
我正在寻找一种有效的方法来做到这一点
提前致谢
最佳答案
如果您为删除的每个项目调用 RemoveAt,您将移动大量数据。最有效的方法是将要保留的项目移动到一起,然后在最后删除未使用的项目:
int pos = 0;
for (int i = 0; i < values.Count; i += 2, pos++) {
values[pos] = values[i];
}
values.RemoveRange(pos, values.Count - pos);
编辑:
此方法将在 15 毫秒内处理一百万个整数的列表。使用 RemoveAt 将花费三分钟多...
编辑2:
您实际上可以从 pos=1 和 i=2(或 3)开始,因为不必将第一项复制到自身。不过,这会使代码不那么明显。
关于c# - 删除 List<T> 中的备用元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621813/