加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:02:00 所属栏目:百科 来源:网络整理
导读:我有通用列表,它必须是一个保留的顺序,所以我可以检索列表中的一个对象的索引. IndexOf的问题太慢了.如果我对IndexOf进行评论,代码就可以运行得很快.有没有更好的方法,例如c#的保留的有序哈希列表? 谢谢, 内特 编辑 – 添加/插入项目的顺序是它需要的顺序.
我有通用列表,它必须是一个保留的顺序,所以我可以检索列表中的一个对象的索引. IndexOf的问题太慢了.如果我对IndexOf进行评论,代码就可以运行得很快.有没有更好的方法,例如c#的保留的有序哈希列表?

谢谢,
内特

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读