Если я просто хочу отсортированный список просто дат, целых чисел, или удваивается, действительно необходимо должным быть определить SortedList (Целого числа, Целого числа)?
Кажется интригующим мне, но может просто быть trival. Я предпочел бы только использовать SortedList (Целого числа).
(Этот вопрос относительно универсальных наборов .NET),
В следующей версии .NET (4.0) появится класс SortedSet
который будет делать то, что вы хотите. До тех пор инкапсуляция SortedList
будет ближе всего - если только вы не хотите реализовать собственный класс для этого или использовать внешние библиотеки коллекций (например, C5, в котором есть SortedArray
и класс TreeSet
).
Сортированный список сортируется по ключу, а не по значениям. Из MSDN
Элементы объекта SortedList сортируются по ключам либо в соответствии с конкретной реализацией IComparer , указанной при SortedList создается или согласно реализации IComparable , предоставляемой самими ключами. В любом случае SortedList не допускает дублирование ключей.
Так что, по сути, это класс словаря, поддерживающий сортировку. Список
, с другой стороны, сортирует значения
Да, это необходимо, потому что так был разработан API. :-)
Но несложно просто сделать свой собственный SortedList
, который использует SortedList
. 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
не может обрабатывать дампы.
Думаю, HashSet
может удовлетворить ваши потребности.
Можно использовать обычный List
и вызвать Sort
на нем.