采用哪一种方法
-
List<T>.IndexOf()
and
List<T>.FindIndex()
就处理时间而言是否更高效?
的类型T
在这种情况下是String
.
IndexOf
执行 for 循环,使用Equals
实现正在搜索的对象以查找匹配项。FindIndex
还执行 for 循环但评估Predicate
检查是否匹配。
它们都归结为一个 for 循环。虽然他们在技术上都有O(n)
设计中,委托的使用FindIndex
会有一些开销。性能差异可以看出Denis19901 的回答 https://stackoverflow.com/a/67823322/74757。以下是一些 MSDN 摘录:
List<T>.IndexOf Method (T) https://msdn.microsoft.com/en-us/library/e4w08k17%28v=vs.110%29.aspx:
该方法执行线性搜索;因此,该方法是一个 O(n)操作,其中n is Count
.
List<T>.FindIndex Method (Predicate<T>) https://msdn.microsoft.com/en-us/library/x1xzf2ca%28v=vs.110%29.aspx:
该方法执行线性搜索;因此,该方法是一个 O(n)操作,其中n is Count
.
也就是说,这两个函数的使用方式会有很大不同。前者假设您有列表中的一个对象,您只需要知道它在列表中存在的索引(如果有)。
后者假设您知道有关对象的一些条件,并且您希望找到列表中对象与该条件匹配的第一个索引。可能有多个匹配项,但该方法返回第一个匹配项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)