1

我目前正在构建一个非常依赖效率的数据结构。

谁能向我提供有关 Find(item => item.X = myObject.Property) 方法实际工作原理的资源?它是否在所有元素中线性迭代,直到找到元素?

如果我知道 myObject 的索引并使用 ElementAt(index) 怎么办?

请问这两个哪个效率最高?

4

1 回答 1

6

来自MSDN documentation on List<T>.Find

该方法执行线性搜索;因此,此方法是 O(n) 操作,其中 n 是 Count。

ElementAt是优化的IList并将做一个直接索引。但是既然你显然是在使用List具体类型的这个对象,为什么不直接做一个索引呢?像这样:

var result = list[index];

如果您已经知道索引,则无需搜索。直接去吧。

于 2012-05-23T22:40:25.173 回答