Код: Выделить всё
readonly List _cachedPaths = new List();
FirstOrDefault для получения элемента, удовлетворяющего определенным условиям
Код: Выделить всё
var cached = _cachedPaths.FirstOrDefault(p => p.From == from && p.To == target && p.Actor == self);
Код: Выделить всё
_cachedPaths.Remove(cached);
Код: Выделить всё
_cachedPaths.Add(new CachedPath {
From = from,
To = target,
Actor = self,
Result = pb,
Tick = _world.WorldTick
});
Учитывая, что быстрый поиск (содержит), вставки и удаления в «HashSet» равен O (1) (если я не ошибаюсь), я рассмотрел возможность использования «HashSet» ', чтобы выполнить эти операции. Единственная проблема — это FirstOrDefault: чтобы получить ее, мне пришлось перечислить всю коллекцию.
Учитывая эту проблему, я рассмотрел возможность использования словаря, индексированного по хешу From. , Кому и Актеру:
Код: Выделить всё
Dictionary cachedPath
Я что-то упустил? Действительно ли Dictionary лучше HashSet в том смысле, что он поддерживает больше операций?
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/280 ... dictionary
Мобильная версия