Что ж, я искал способы генерирования UID в java-коде (большинство из них также приходят в stackoverflow). Лучше всего использовать UUID java для создания уникальных идентификаторов, так как он использует метку времени. Но моя проблема в том, что он длиной 128 бит и мне нужна более короткая строка, например, 14 или 15 символов. Итак, я разработал следующий код для этого.
Date date = new Date();
Long luid = (Long) date.getTime();
String suid = luid.toString();
System.out.println(suid+": "+suid.length() + " characters");
Random rn = new Random();
Integer long1 = rn.nextInt(9);
Integer long2 = rn.nextInt(13);
String newstr = suid.substring(0, long2) + " " + long1 + " " + suid.subtring(long2);
System.out.println("New string in spaced format: "+newstr);
System.out.println("New string in proper format: "+newstr.replaceAll(" ", ""));
Обратите внимание, что я просто отображаю строку, отформатированную и правильно отформатированную для сравнения только с исходной строкой.
Будет ли это гарантировать 100% уникальный идентификатор каждый раз? Или вы видите какую-либо возможность повторения чисел? Кроме того, вместо вставки случайного числа в случайную позицию, которая «может» создать повторяющиеся числа, я мог бы сделать это либо в начале, либо в конце. Это для завершения необходимой длины моего UID. Хотя это может не сработать, если вам нужен UID длиной менее 13 символов.
Есть мысли?