List .IndexOf()与List .FindIndex()的效率
其中一种方法
-
List.IndexOf()
和 -
List.FindIndex()
在处理时间方面更有效?
此实例中的T
类型为String
。
IndexOf
执行for循环,使用正在搜索的对象的Equals
实现来查找匹配项。 FindIndex
还会执行for循环,但会评估Predicate
以检查匹配。
他们每个都归结为一个for循环。 性能差异(如果有的话)可以忽略不计。 以下是一些MSDN摘录:
List
:
该方法执行线性搜索; 因此,该方法是O( n )操作,其中n是
Count
。
List
:
该方法执行线性搜索; 因此,该方法是O( n )操作,其中n是
Count
。
也就是说,两种function的使用方式完全不同。 前者假设您有一个列表中的对象,您只需要知道列表中存在的索引(如果有)。
后者假设您了解某个对象的某些条件,并且您希望找到列表中的对象与该条件匹配的第一个索引。 可能有多个匹配项,但该方法返回第一个匹配项。