【发布时间】:2011-01-27 15:53:18
【问题描述】:
如果我只想要一个仅包含日期、整数或双精度数的排序列表,是否真的有必要定义一个 SortedList(of Integer, Integer)?
对我来说似乎很有趣,但可能只是琐碎。我宁愿只使用 SortedList(of Integer)。
(这个问题与 .Net 通用集合有关)
【问题讨论】:
标签: .net generics collections
如果我只想要一个仅包含日期、整数或双精度数的排序列表,是否真的有必要定义一个 SortedList(of Integer, Integer)?
对我来说似乎很有趣,但可能只是琐碎。我宁愿只使用 SortedList(of Integer)。
(这个问题与 .Net 通用集合有关)
【问题讨论】:
标签: .net generics collections
是的,这是必要的,因为这就是 API 的设计方式。 :-)
但是创建自己的使用SortedList<K,V> 的SortedList<T> 并不难。 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 无法处理重复数据。
【讨论】:
排序列表根据键而不是值进行排序。来自MSDN
SortedList 对象的元素 按键排序 根据特定的 IComparer 实施时指定 SortedList 是创建或根据 IComparable 实现 由密钥本身提供。在 无论哪种情况,SortedList 都不会 允许重复键。
所以它基本上是一个支持排序的字典类。另一方面,List 按值排序
【讨论】:
我认为HashSet<int> 可能适合您的需求。
【讨论】:
您可以使用普通的List<T> 并在其上调用Sort。
【讨论】: