Связанный список в хеш-таблицах - PullRequest
2 голосов
/ 18 ноября 2011

Предположим, мы хотим многократно искать связанный список длиной N элементов, каждый из которых содержит очень длинный строковый ключ.Как мы можем воспользоваться преимуществом хеш-значения при поиске в списке элемента с заданным ключом?

Ответы [ 5 ]

0 голосов
/ 18 ноября 2011

Поместите это в HashSet.Алгоритмы поиска будут использовать хеш для каждого вставленного значения String.

0 голосов
/ 18 ноября 2011

Не уверен, с какими ограничениями вы работаете здесь (т.е. это может занять слишком много памяти в зависимости от размера строк), но если вам нужно поддерживать связанный список, вы можете создать HashMap, который отображает строки в их положение в списке, которое позволит вам извлечь любую строку из списка с 2 операциями с постоянным временем.

0 голосов
/ 18 ноября 2011

Вам необходимо подготовить хеши перед поиском в списке, и вам нужно иметь доступ к хешу строки в постоянное время. Затем вы можете сначала сравнить хэши и сравнивать строки только при совпадении хэшей. Вы можете использовать хеш-таблицу вместо связанного списка.

0 голосов
/ 18 ноября 2011

Хеш-значение строки (hashCode) немного похоже на идентификатор строки.Не совсем уникальный, но обычно довольно уникальный.Вы можете HashMap хранить строковые ключи и их значения.HashMap, как следует из его названия, использует хеш-значения Strings для эффективного хранения и извлечения значений.

0 голосов
/ 18 ноября 2011

Вставьте ключи в хэш-таблицу. Тогда вы можете искать в (теоретически) постоянное время.

...