如 Dictionary 和 sortedList 都是必要的,那么你可以分别建立这样两个类型的对象,对于同一个数据实体分别放入这两个数据结构中(删除也是一样去分别删除)。
“多花一倍的时间”是什么数量级的时间?
这么说吧,在Dictionary里面,数据都是乱序排列的,所以如果你必须Dictionary,而且没有任何key与value的特殊关系(比如key大,value也大),那么没有任何办法,只能循环遍历 如果你的Dictionary的值在加载完后就不会发生变化,那你还可以通过其它数据结构来存储value的部分 还有如果你不是要通过key来取值,那么你也可以考虑用List<KeyValuePair<T1,T2>>这种
谢谢,目前我想到的也是再建立一个List用来存储Top 20的数据。 不过这样时间复杂度似乎也不低,因为做插入删除时等于要多花一倍的时间。 我再想想看有没有其它方法来解决这个问题。
[quote=引用 3 楼 Rino 的回复:] ...我要的不是key排序,而是Value值最大的N个KeyValuePair的键值...
[quote=引用 7 楼 hanjun0612 的回复:] 用list<T>然后orderby value一下,take(20)就好了
用list<T>然后orderby value一下,take(20)就好了
如果你是要取value,那为啥还要用Dictionary呢?
...我要的不是key排序,而是Value值最大的N个KeyValuePair的键值...
不要用Dictionary,而是用SortedDictionary,这样你只要顺序或者倒序遍历20个就可以了(具体顺序还是倒序看你是怎么排序的)
SortedDictionary也是用于键排序的 所以,如果事先不是排序好的,只能通过遍历,复杂度为O(nN)
110,529
社区成员
642,571
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧