C# · 12月 26, 2021

c# – IndexOf在列表中太慢.更快的解决方案?

我有通用列表,它必须是一个保留的顺序,所以我可以检索列表中的一个对象的索引. IndexOf的问题太慢了.如果我对IndexOf进行评论,代码就可以运行得很快.有没有更好的方法,例如c#的保留的有序哈希列表?

谢谢,
内特

>编辑 –
添加/插入项目的顺序是它需要的顺序.不需要对它们进行排序.此列表也有可能经常更新,添加,删除,插入.基本上,我需要将对象转换为索引,因为它们在网格控件中表示,所以我可以基于索引对网格控件执行操作.

解决方法 如果没有排序,但是顺序需要保留,那么你可以有一个单独的Dictionary< YourClass,int>其中将包含每个元素的索引.

如果你想排序列表,那么检查以前的帖子 – 你可以使用SortedList< Tkey,TValue>在.Net 3.5中,或者对旧版本的.NET版进行排序并使用BinarySearch.

[编辑]您可以在网络上找到类似的例子,例如:OrderedList.这个内部使用了一个ArrayList和一个HashTable,但是你可以很容易地使它成为通用的.

[Edit2] Ooops ..我给你的​​例子没有按照我在开头描述的方式实现IndexOf …但是你得到的点 – 一个列表应该被排序,另一个用于快速查找.