Сортировка Словаря на месте относительно ключей

У меня есть словарь в C# как

Dictionary<Person, int>

и я хочу отсортировать тот словарь на месте относительно ключей (поле в классе Человек). Как я могу сделать это? Каждая доступная справка в Интернете является справкой списков без конкретного примера на месте сортировки Словаря. Любая справка высоко ценилась бы!

70
задан nawfal 5 November 2013 в 05:58
поделиться

4 ответа

Вы не можете отсортировать Dictionary - он изначально неупорядочен. (Или, скорее, порядок, в котором извлекаются записи, зависит от реализации. Вы не должны полагаться на то, что он работает одинаково между версиями, поскольку упорядочение не является частью его разработанной функциональности.)

Вы можете используйте SortedList или SortedDictionary , оба из которых сортируются по ключу (настраиваемым способом, если вы передаете IEqualityComparer в конструктор) - могут ли они быть вам полезны?

Не обращайте внимания на слово «список» в имени SortedList - это все еще словарь, в котором он сопоставляет ключи со значениями. Он реализован с использованием внутреннего списка, поэтому вместо поиска по хеш-коду выполняется двоичный поиск. SortedDictionary аналогичным образом основан на двоичном поиске, но с использованием дерева вместо списка.

144
ответ дан 24 November 2019 в 13:16
поделиться

По умолчанию словари нельзя сортировать. Если вам нужна эта возможность в словаре, посмотрите вместо этого SortedDictionary.

7
ответ дан 24 November 2019 в 13:16
поделиться

Попробуйте использовать SortedDictionary

24
ответ дан 24 November 2019 в 13:16
поделиться

Взгляните на SortedDictionary , там даже перегрузка конструктора, чтобы вы могли передать свой собственный IComparable для сравнения.

4
ответ дан 24 November 2019 в 13:16
поделиться
Другие вопросы по тегам:

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