Почему в сортированном списке должна быть пара ключевых значений?
Если мне просто нужен отсортированный список только дат, целых чисел или удвоений, действительно ли нужно определить SortedList (Integer, Integer)?
Кажется интригующим для меня, но может быть просто треугольником. Я бы предпочел просто использовать SortedList (из Integer).
(Этот вопрос относится к общим коллекциям .Net)
Ответы
Ответ 1
В следующей версии .NET(4.0) будет SortedSet
класс, который точно делает то, что вы хотите. До тех пор инкапсуляция SortedList
становится ближе всего - если вы не хотите реализовать собственный класс для этого или использовать внешние библиотеки коллекции (например, C5, который имеет класс SortedArray
и a TreeSet
).
Ответ 2
Вы можете использовать обычный List<T>
и называть Sort
на нем.
Ответ 3
Да, это необходимо, потому что именно так был разработан 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
не может обрабатывать дубликаты.
Ответ 4
Сортированный список сортируется по ключу, а не по значениям. Из MSDN
Элементы объекта SortedList сортируются по клавишам в соответствии с конкретным IComparer реализации, если SortedList создается или согласно реализация IComparable предоставляемые самими ключами. В в любом случае, SortedList не позволяют дублировать ключи.
Итак, это в основном класс словаря, который поддерживает сортировку. List
, с другой стороны, сортирует значения
Ответ 5
Я думаю, что HashSet<int>
может удовлетворить ваши потребности.