Полагаю, вы имеете в виду Dictionary<TKey, TValue>
во втором случае? HashTable
это неуниверсальный класс.
Вы должны выбрать правильную коллекцию для работы на основе ваших фактических требований. Вы на самом деле хотите сопоставить каждый ключ со значением? Если это так, используйте Dictionary<,>
. Если вы только заботитесь о нем как о наборе, используйте HashSet<>
.
Я бы ожидал, что HashSet<T>.Contains
и Dictionary<TKey, TValue>.ContainsKey
(которые являются сопоставимыми операциями, если вы разумно используете свой словарь) в основном выполняют то же самое - они в основном используют один и тот же алгоритм. Я полагаю, что если записи в Dictionary<,>
будут больше, в итоге вы получите большую вероятность взрыва кеша с Dictionary<,>
, чем с HashSet<>
, но я ожидаю, что это будет незначительно по сравнению с болью выбора неправильных данных введите просто с точки зрения того, что вы пытаетесь достичь.