Краткий ответ: вы, вероятно, не можете. Если только идентификаторы не гарантированно будут короткими.
A Long использует 8 байтов, поэтому он может содержать 2⁶⁴ (около 1,8 × 10¹⁹) различных значений. Таким образом, он может представлять только это количество строк. (В результате применения принципа pigeonhole .)
Однако, если идентификаторы содержат только базовые c буквы ASCII (предположим, в верхнем регистре) и цифры - 36 вариантов - и 13 символов долго, то есть 36¹³ (около 1.7 × 10²⁰) разных строк. Это на порядок больше, чем 2⁶⁴, поэтому некоторым из них придется сопоставить одно и то же значение Long.
(Фактически, каждый Long будет отображать в среднем около 10 идентификаторов - и даже больше, если вы включите строки с меньшим количеством символов и / или большим диапазоном символов.)
Таким образом, если диапазон идентификаторов не ограничен, вам придется найти другой подход.