当前位置:  开发笔记 > 编程语言 > 正文

为什么不使用FindIndex()并以比FindAll()更快的迭代返回?

如何解决《为什么不使用FindIndex()并以比FindAll()更快的迭代返回?》经验,为你挑选了1个好方法。



1> CodeCaster..:

你的方法是慢,因为它遍历整个集合三次,因为你做删除操作也付出了代价(的"O(n),其中n为(计数-索引)",根据MSDN).

您可以通过调用FindIndex(int, predicate)重载来避开这两种情况,int在迭代源集合时会谴责起始位置.

所以要替换出现这种情况的地方:

myCollection.RemoveAt(index);

index = myCollection.FindIndex(predicate);

有了这个:

index = myCollection.FindIndex(index + 1, predicate) 


所有方法现在都归结为:迭代集合并查找与谓词匹配的对象.最好的情况是,你的应该更快 - 如果许多元素与谓词相匹配,并且如果它们在开头.如果您的大量数据包含少于三个匹配项,则所有方法都必须迭代整个集合,并且需要花费同样的时间.
推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有