Я ищу структуру данных или их комбинацию, которая может дать мне поведение, удовлетворяющее следующим условиям:
- O (n) Итерация (не должна быть в порядке)
- O (1) Содержит
- O (1) Получить (по ключу, который является int)
- O (1) Добавить
- O (1) Удалить
Три решения, которые я придумала, примерно такие, оба являются просто использованием встроенных коллекций в .NET
Создайте свой собственный хэш-набор, который предоставляет внешнему миру больше внутреннего хранилища, чем по умолчанию HashSet<T
> в .NET
Используйте Dictionary<int, T>
, так как итерация не должна быть упорядоченной, но это очень высокопроизводительное приложение и мусор, который создается при создании перечислителя каждый раз, когда мне нужно пройти через Коллекция беспокоит меня. Беспокойство по поводу мусора - это не то, что я «придумал», это для симуляции в реальном времени, и любой мусор, который может вызвать сборщик мусора, по сути, не вариант, если его можно избежать.
Используйте комбинацию Dictionary<int, int>
и T[]
, в основном сохраняйте ключ + индекс в массиве в словаре и сохраняйте элементы в T[]
.