如果我只想要一个只有日期,整数或双精度的排序列表,是否真的有必要定义一个SortedList(Integer,Integer)?
似乎对我很有吸引力,但可能只是琐事。我更喜欢使用SortedList(Integer)。
(这个问题与.Net泛型集合有关)
答案 0 :(得分:8)
下一版本的.NET(4.0)将拥有完全符合您要求的SortedSet
类。在此之前,封装SortedList
最接近 - 除非您想要实现自己的类来执行此操作,或者使用外部集合库(例如C5具有SortedArray
和TreeSet
} class)。
答案 1 :(得分:3)
您可以使用常规List<T>
并在其上调用Sort
。
答案 2 :(得分:1)
是的,这是必要的,因为这就是API的设计方式。 : - )
但要使用SortedList<T>
创建自己的SortedList<K,V>
并不难。 5行代码?
class SortedList<T> : IEnumerable<T> {
SortedList<T,int> _list = new SortedList<T,int>();
public IEnumerator<T> GetEnumerator() { return _list.Keys.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); }
public void Add(T v) { _list.Add(v, 1); }
public int Count { get { return _list.Count; } }
}
唯一的问题是,SortedList
无法处理重复。
答案 3 :(得分:0)
排序列表对键进行排序,而不对值进行排序。来自MSDN
SortedList对象的元素 按键排序 根据特定的IComparer 实现时指定的 SortedList是根据或创建的 IComparable实现 由钥匙本身提供。在 无论哪种情况,SortedList都没有 允许重复的密钥。
所以它基本上是一个支持排序的字典类。另一方面,List
对值进行排序
答案 4 :(得分:-1)
我认为HashSet<int>
可能符合您的需求。