Список приоритетов C#

У меня проблемы с поиском правильной структуры данных C#. Я ищу PriorityList. Это должно иметь следующее:

  • Только один предмет с данным приоритетом
  • Должен оставаться отсортированным всегда
  • Возможность добавить элемент в конец списка - prorityList.Add(item)
  • Возможность вставки элемента с заданным приоритетом - priorityList.Add(3, item)
  • Возможность доступа к любому элементу с помощью priority - priorityList[3]
  • Возможность удалить элемент с заданным приоритетом - priorityList.RemoveAt(3)
  • Когда элемент добавляется или удаляется, остальная часть списка должна соответственно сдвигаться вверх или вниз - например, если третий элемент удаляется, четвертый элемент становится третьим элементом, пятый элемент становится четвертым элементом и т. Д.

SortedList в C# выглядел многообещающе, но он не может обрабатывать вставку с уже существующим приоритетом или удаление элемента с заданным приоритетом (с соответствующим изменением списка в обоих случаях).

2 ответа

Решение

Если вы просто используете стандарт List<T> это должно дать вам все, что вы просили, если вы используете priority == index.

Как насчет использования SortedDictionary<TKey, TValue> где ключ является приоритетным? Он не совсем соответствует всем вашим требованиям, и неясно, хотите ли вы, чтобы приоритет был уникальным или нет. Если вы не хотите, чтобы приоритет был уникальным, LinkedList<T> это, вероятно, ваш лучший выбор.

Другие вопросы по тегам