Почему отсортированный список должен иметь пару значения ключа?

Если я просто хочу отсортированный список просто дат, целых чисел, или удваивается, действительно необходимо должным быть определить SortedList (Целого числа, Целого числа)?

Кажется интригующим мне, но может просто быть trival. Я предпочел бы только использовать SortedList (Целого числа).

(Этот вопрос относительно универсальных наборов .NET),

14
задан EyeDub 21 July 2011 в 12:40
поделиться

5 ответов

В следующей версии .NET (4.0) появится класс SortedSet который будет делать то, что вы хотите. До тех пор инкапсуляция SortedList будет ближе всего - если только вы не хотите реализовать собственный класс для этого или использовать внешние библиотеки коллекций (например, C5, в котором есть SortedArray и класс TreeSet).

8
ответ дан 1 December 2019 в 15:01
поделиться

Сортированный список сортируется по ключу, а не по значениям. Из MSDN

Элементы объекта SortedList сортируются по ключам либо в соответствии с конкретной реализацией IComparer , указанной при SortedList создается или согласно реализации IComparable , предоставляемой самими ключами. В любом случае SortedList не допускает дублирование ключей.

Так что, по сути, это класс словаря, поддерживающий сортировку. Список , с другой стороны, сортирует значения

0
ответ дан 1 December 2019 в 15:01
поделиться

Да, это необходимо, потому что так был разработан 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 не может обрабатывать дампы.

1
ответ дан 1 December 2019 в 15:01
поделиться

Думаю, HashSet может удовлетворить ваши потребности.

-1
ответ дан 1 December 2019 в 15:01
поделиться

Можно использовать обычный List и вызвать Sort на нем.

3
ответ дан 1 December 2019 в 15:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: