Простая коллекция со строковыми объектами, которая позволяет искать в 0 (1) операции - PullRequest
0 голосов
/ 12 февраля 2012

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

Наша структура данных должна возвращать true, если присутствует, иначе false, если не присутствует

Ответы [ 3 ]

5 голосов
/ 12 февраля 2012

Используйте структуру HashSet<String>.Операция contains() имеет сложность O (1).

1 голос
/ 12 февраля 2012

Постоянное время равно O (1). HashMap в порядке. (Или HashSet, в зависимости от того, нужен ли вам Set или Map.)

Если ваш набор является неизменяемым, ImmutableSet в Guava уменьшит объем памяти в ~ 3 раза (и, вероятно, даст вам небольшой постоянный коэффициент улучшения скорости).

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

Если вы не можете использовать HashSet / HashMap, как предлагалось ранее, вы можете написать реализацию Radix Tree .

...