public class Foo{ public List<bar> Allbars { get; set; } public bar Firstbar { get; set; } public Foo (bar bar) { Firstbar = bar; Allbars = new List<bar>() { bar }; } public Addbar(bar bar) { if(bar.Duration < Firstbar.Duration) { Firstbar = bar; } Allbars.Add(bar); }}
这个类Foo用于处理性能(速度)至关重要的算法中.记忆是重要的,但不如速度那么快.有一个n Foos的列表,每个都有m个酒吧.这个课程已经很好,直到这一点.我现在希望为用户提供几种选择,这意味着我需要随机访问列表中的前几个条.
因此,我想按顺序存储我的酒吧,以便我可以按索引访问它们.在我的bar课程中,我实现了IComparable,允许在持续时间上比较bars,但是我坚持选择适当的数据类型.我看着System.Collections.sortedList但是(除非我错了),因为它实现了IDictionary,这似乎是通过key来引用元素的.我可以使用什么集合来维护我的对象,使它们保持排序,并且它们可以按索引的顺序遍历?
解决方法 (根据asker的要求从评论中提拔)如果你可以拥有“值”意味着什么,只需使用SortedList< bar,对象>在那里你不使用价值部分.
在O(n)时间内添加yourSortedList.Add(yourbar,null)(该列表将必须在所插入的点之后移动“up”所有条目).使用yourSortedList.Keys [i]在O(1)时间内检索第i个条目.
参见SortedList<,>.Keys
property documentation的一些“证明”,上面的描述是正确的.请注意,SortedList<,>实际上由“列表”(即,长度容量的阵列,需要时由更大的阵列代替)组成.这与SortedDictionary<,>不同我相信是一个二叉搜索树.
请注意:您将无法在SortedList<,> ;,中重复,因此列表中的两个成员不允许以返回值为零进行Compareto.
总结以上是内存溢出为你收集整理的维护排序顺序C#的集合全部内容,希望文章能够帮你解决维护排序顺序C#的集合所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)