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