У меня есть список объектов, и я должен найти объект как можно быстрее (он - свойство имени). Какую структуру данных я должен использовать? Я знаю, что могу использовать Словарь, но там привычка когда-либо быть больше чем 10 объектами в списке, и если я помню правильно словарь, реализована как массив, если набор содержит 10 объектов или меньше.
Спасибо.
MSDN рекомендует ListDictionary для коллекций с 10 или менее элементами:
Это простая реализация IDictionary с использованием односвязного списка. Он меньше и быстрее, чем Hashtable, если количество элементов 10 или меньше. Это не следует использовать, если производительность важна для большого количества элементов.
Вы можете рассмотреть System.Collections.Specialized.ListDictionary
, если вы уверены, что там будет меньше десяти элементов.
Также рассмотрите System.Collections.Specialized.HybridDictionary
, который переключает поведение (с небольшими накладными расходами), если размер превышает пороговое значение, что удобно, если ваше предположение неверно.
Поскольку вам нужен максимально быстрый поиск по свойству, вам следует использовать Dictionary
. Размер не повредит, если вы хотите быстро найти. Дело не в том, что Dictionary
всего из 10 или менее элементов занимает тонну памяти. Dictionary
имеет конструктор, который принимает int для установки емкости.
Почему бы просто не использовать хеш-таблицу? Он находится в пространстве имен System.Collections.