Можно ли использовать hashCode как уникальный идентификатор контента? - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно сравнить две большие строки. Вместо того, чтобы использовать метод equals, подобный этому, есть ли способ типа hashCode или что-то, что генерирует уникальный идентификатор для String? Это потому, что моя строка очень большая. Кроме того, мне нужен уникальный идентификатор уникального контента. Возможно ли использовать hashCode в строке для моей цели.

1 Ответ

1 голос
/ 25 марта 2020

Цель hashCode - предоставить быстрое средство идентификации большинства обстоятельств, при которых два объекта будут сравниваться неравно. Функция ha sh, которая имеет уровень ложных срабатываний 1%, в большинстве случаев считается превосходящей функцию, которая имеет уровень ложных срабатываний 0%, но занимает вдвое больше времени.

Существуют некоторые функции хеширования, которые предназначены для использования в качестве «дайджестов», так что две разные строки произвольной длины будут очень вряд ли иметь один и тот же дайджест. Однако, чтобы быть очень эффективными, дайджесты должны быть намного больше, чем 32-битное значение хэш-кода. Хорошо спроектированный 64-байтовый (512-битный) дайджест, как правило, был бы достаточен для того, чтобы охранять строки любой длины достаточно хорошо, чтобы с большей вероятностью ударить молнией дважды в один и тот же уик-энд, так как один выигрывает пять лотерей штата, а не два разные строки, которые дают один и тот же дайджест. Стоимость вычисления хорошей функции дайджеста для строки будет намного выше, чем стоимость сравнения строки с другой строкой, но если каждую строку сравнивать со многими другими строками, вычисляя каждую функцию дайджеста один раз и сравнивая ее с дайджестами каждой строки другая строка может предложить выигрыш в производительности.

...