Должен ли я использовать словарь для коллекций с 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.