Является ли словарь лучшим способом записи наличия или отсутствия ключа - PullRequest
3 голосов
/ 20 февраля 2012

Извините, если об этом уже спрашивали в другом месте, но я не смог его найти.

Я хочу сохранить набор строк в .NET таким образом, чтобы их можно было легко и быстро просмотретьчтобы узнать, сохранен ли ключ.

Я мог бы просто использовать List и перечислять список каждый раз, когда мне нужно искать, но очевидно, что линейный поиск довольно неэффективен.

Итак, моя следующая мысль - использовать словарьи запрашивать это каждый раз, что, как мы надеемся, должно привести к некоторому крутому хешированию строк и более быстрому поиску.Однако я не храню ничего в «объектной» части словаря, поэтому кажется, что там может быть неэффективность.

Есть ли лучший способ сделать это?

Ответы [ 3 ]

10 голосов
/ 20 февраля 2012

Вы ищете HashSet<string>, который обеспечивает ту же производительность O (1) словаря, но без этих надоедливых значений.

2 голосов
/ 20 февраля 2012

HashSet<string> для неупорядоченных множеств или
SortedSet<string> если заказ не важен.

0 голосов
/ 20 февраля 2012

Если ваш объект словаря используется несколькими потоками, лучшим выбором будет ConcurrentDictionary (Of TKey, TValue).

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