SortedList <>, SortedDictionary <> и Словарь <>

Я беру его, чтобы означать, что это способно к выражение идеи/алгоритмы/задачи легким для чтения и сжатым способом.

Обычно я связываю язык, являющийся выразительным с синтаксическим сахаром, хотя это не всегда имеет место. Примеры в C# его являющийся выразительным были бы:

  • foreach (вместо того, чтобы явно писать повторение)
  • using оператор (вместо того, чтобы явно писать попытку/наконец)
  • выражения запроса (более простой синтаксис для записи запросов LINQ)
  • дополнительные методы (позволяющий объединение в цепочку вызовов метода, снова прежде всего, для LINQ)
  • анонимные методы и лямбда-выражения (разрешающий более легкому делегату и конструкции дерева выражений)

А другим примером были бы дженерики: прежде чем C# получил дженерики, Вы не могли выразить идеи "ArrayList содержащий, только представляет в виде строки" в коде. (Вы могли зарегистрировать его, конечно, или записать Ваше собственное StringList тип, но это - не совсем то же.)

85
задан Sergio 27 March 2014 в 12:26
поделиться

2 ответа

  1. При итерации по элементам в любом из двух элементы будут отсортированы. Не так с Dictionary .

  2. MSDN устраняет разницу между SortedList и SortedDictionary :

Общий класс SortedDictionary (TKey, TValue) представляет собой двоичный поиск tree с извлечением O (log n), где n - количество элементов в словарь. В этом отношении он похож на SortedList (TKey, TValue) универсальный класс. Эти два класса имеют похожие объектные модели, и оба имеют извлечение O (log n). Два класса отличаются друг от друга использование памяти и скорость вставки и удаления:

SortedList (TKey, TValue) использует меньше памяти, чем SortedDictionary (TKey, TValue).

SortedDictionary (TKey, TValue) имеет более быструю вставку и удаление операции для несортированных данных: O (log n) в отличие от O (n) для SortedList (TKey, TValue).

Если список заполняется сразу из отсортированных данных, SortedList (TKey, TValue) быстрее, чем SortedDictionary (TKey, TValue).

92
ответ дан 24 November 2019 в 08:16
поделиться
  1. Когда вы хотите, чтобы коллекция была отсортирована по ключу при итерации по ней. Если вам не нужно сортировать данные, вам лучше использовать словарь, он будет иметь более высокую производительность.

  2. SortedList и SortedDictionary в значительной степени делают то же самое, но реализованы по-разному, поэтому имеют разные здесь описаны сильные и слабые стороны .

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

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