Мне нужно отсортировать некоторые объекты в соответствии с их содержимым (фактически в соответствии с одним из их свойств, которое НЕ является ключом и может быть дублировано между разными объектами).
.NET предоставляет два класса (SortedDictionary и SortedList), и оба они реализованы с использованием двоичного дерева. Единственные различия между ними:
- SortedList использует меньше памяти, чем SortedDictionary.
- SortedDictionary имеет более быстрые операции вставки и удаления для несортированных данных, O (log n), в отличие от O (n) для SortedList.
- Если список заполняется сразу из отсортированных данных, SortedList работает быстрее, чем SortedDictionary.
Я мог бы достичь того, что хочу, используя List,, а затем используя Sort() с пользовательской реализацией IComparer, но это было бы неэффективно, поскольку я бы сортировал весь список каждый раз, когда я хочу вставить новый объект, тогда как хороший SortedList просто вставляет элемент в нужное положение.
Мне нужен класс SortedList с RefreshPosition (int index), чтобы перемещать только измененный (или вставленный) объект, а не прибегать к списку всего при каждом изменении объекта внутри.
Я пропустил что-то очевидное?