如果我只想要一个日期、整数或双精度的排序列表,那么真的有必要定义一个SortedList(of Integer,Integer)吗?这对我来说很有趣,但可能只是琐碎的。我更喜欢只使用一个SortedList(整型)。(This问题与.Net泛型集合有关)
mpbci0fu1#
下一个版本的.NET(4.0)将有SortedSet类,它完全可以满足你的需求,在此之前,封装SortedList是最接近的--除非你想实现一个自己的类来完成这一任务,或者使用外部集合库(例如,C5有一个SortedArray和一个TreeSet类)。
SortedSet
SortedList
SortedArray
TreeSet
e0bqpujr2#
您可以使用常规的List<T>并在其上调用Sort。
List<T>
Sort
x6492ojm3#
是的,这是必要的,因为这就是API的设计。:-)但是使用SortedList<K,V>来创建自己的SortedList<T>并不难。
SortedList<K,V>
SortedList<T>
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不能处理复制品。
q3qa4bjr4#
排序列表按键排序,而不是按值排序。From MSDNSortedList对象的元素按键排序,排序方式可以是根据创建SortedList时指定的特定IComparer实现,也可以是根据键本身提供的IComparable实现。无论是哪种情况,SortedList都不允许重复键。因此,它基本上是一个支持排序的字典类。另一方面,List按值排序
List
rsl1atfo5#
我想HashSet<int>可能适合你的需要。
HashSet<int>
5条答案
按热度按时间mpbci0fu1#
下一个版本的.NET(4.0)将有
SortedSet
类,它完全可以满足你的需求,在此之前,封装SortedList
是最接近的--除非你想实现一个自己的类来完成这一任务,或者使用外部集合库(例如,C5有一个SortedArray
和一个TreeSet
类)。e0bqpujr2#
您可以使用常规的
List<T>
并在其上调用Sort
。x6492ojm3#
是的,这是必要的,因为这就是API的设计。:-)
但是使用
SortedList<K,V>
来创建自己的SortedList<T>
并不难。唯一的问题是,
SortedList
不能处理复制品。q3qa4bjr4#
排序列表按键排序,而不是按值排序。From MSDN
SortedList对象的元素按键排序,排序方式可以是根据创建SortedList时指定的特定IComparer实现,也可以是根据键本身提供的IComparable实现。无论是哪种情况,SortedList都不允许重复键。
因此,它基本上是一个支持排序的字典类。另一方面,
List
按值排序rsl1atfo5#
我想
HashSet<int>
可能适合你的需要。