Должен ли я использовать словарь для коллекций из 10 предметов или менее, или есть лучшая альтернатива? - PullRequest
13 голосов
/ 10 марта 2010

У меня есть список объектов, и мне нужно как можно быстрее найти объект (по его свойству name). Какую структуру данных я должен использовать? Я знаю, что могу использовать словарь, но в списке никогда не будет более 10 элементов, и если я правильно помню, словарь реализуется как массив, если коллекция содержит 10 элементов или менее.

Спасибо.

Ответы [ 4 ]

11 голосов
/ 10 марта 2010

MSDN рекомендует ListDictionary для коллекций с 10 элементами или менее:

Это простая реализация IDictionary с использованием односвязного списка. Он меньше и быстрее, чем Hashtable, если количество элементов равно 10 или меньше. Это не должно использоваться, если производительность важна для большого количества элементов.

5 голосов
/ 10 марта 2010

Вы можете рассмотреть System.Collections.Specialized.ListDictionary, если уверены, что будет менее десяти наименований.

Также рассмотрим System.Collections.Specialized.HybridDictionary, который переключает поведение (с небольшими накладными расходами), если размер превышает пороговое значение, удобно, если ваше предположение неверно.

2 голосов
/ 10 марта 2010

Поскольку вы хотите максимально быстрый поиск по свойству, вы должны использовать Dictionary<Key, Value>. Размер не повредит вам, если вы хотите быстрый поиск. Дело не в том, что Dictionary<Key, Value> из 10 или менее предметов занимает тонну памяти. Dictionary<Key, Value> имеет конструктор, который принимает int для установки емкости.

0 голосов
/ 10 марта 2010

Почему бы просто не использовать Hashtable? Он находится в пространстве имен System.Collections.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...