Venkat Dabri Ответов: 1

Генерация уникального идентификатора из отсортированного набора строк


У меня есть массив массива строк, то есть массив[Array[String]]

Строки-это имена папок в файловой системе, и возможно около 100 тысяч уникальных имен папок.

Таким образом, структура данных будет выглядеть следующим образом:

Array[ <- Outer Array which is not sorted, 100 million in length
       Array [/ABC/DEF,/XYZ/YTR,.......] <- This inner array is sorted on folder names
       Array [/CDE/FRT,/TUV/HYT,........] <- Want to generate a shorter unique id for each one of this
    ]

Для каждого массива имен папок во внешнем массиве я хочу сгенерировать уникальный идентификатор. Я знаю, что простое хэширование и т. д. строк приведет к столкновениям и, следовательно, небезопасно. Но мне было интересно, есть ли какой-нибудь способ использовать тот факт, что внутренний массив сортируется для создания алгоритма хэширования. Я могу перейти к строке из 500 символов. Любая библиотека Java/Scala, которая делает это? Предположим, что я не могу сделать groupBy и т. д. На этом наборе данных.

Что я уже пробовал:

Провел кое-какие исследования в интернете.

Venkat Dabri

Могу ли я использовать для этого алгоритм SHA-512?

1 Ответов

Рейтинг:
2

CPallini

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

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


Venkat Dabri

Нет мое требование состоит в том что одни и те же элементы во внешнем массиве имеют один и тот же уникальный идентификатор