Класс Java UUID генерирует случайный UUID. Но это состоит из алфавитов и чисел. Для некоторых приложений нам нужны только числа. Есть ли способ генерировать случайный UUID, который состоит только из чисел в Java?
UUID.randomUUID();
Класс Java UUID генерирует случайный UUID. Но это состоит из алфавитов и чисел. Для некоторых приложений нам нужны только числа. Есть ли способ генерировать случайный UUID, который состоит только из чисел в Java?
UUID.randomUUID();
Почему бы не просто генерировать Random
номер и поместить его в желаемый формат?
Это не даст вам уникальности из коробки. (т.е. вам нужно будет выполнить проверку каждого поколения и логику повтора)
Где, как другие решения, которые принимают биты UUID и преобразуют их в число, будут более точными в уникальности. в зависимости от вашего использования, вы все равно можете проверить уникальность этого подхода.
Если вы не хотите случайного числа, но UUID с номерами используйте только:
String lUUID = String.format("%040d", new BigInteger(UUID.randomUUID().toString().replace("-", ""), 16));
в этом случае оставлено до 40 нулей...
результаты для:
UUID: b55081fa-9cd1-48c2-95d4-efe2db322a54
в:
UUID: 0241008287272164729465721528295504357972
Хотя исходный постер этого вопроса поставил под вопрос @Jigar Joshi как лучший ответ, я хотел бы добавить, что в некоторых случаях есть смысл использовать UUID, а не случайные числа. Разница в том, что UUID (универсально) уникальны (отсюда и название), а случайные числа - нет. Это просто вопрос вероятности, если вы получаете одинаковое число дважды или даже чаще при генерации случайных чисел, но это никогда не произойдет с UUID. Поэтому я бы назвал @Chris Eibl ответом как лучший.
Зачем использовать класс UUID, если вам не нужен UUID? Это похоже на то, что вам нужно просто случайное число, которое может быть достигнуто с помощью класса java.util.Random
.
UUID uuid = UUID.randomUUID();
String numericUUID = Long.toString(uuid.getMostSignificantBits())
+ Long.toString(uuid.getLeastSignificantBits());
Если вы хотите использовать UUIDs
в отличие от класса Random
, как это было предложено другими, вы можете просто использовать регулярное выражение вычеркивать все, кроме цифр из UUID. Попробуйте что-то вроде этого,
String id = UUID.randomUUID().toString().replaceAll("[^0-9]", "");
Вызовите hashCode()
в UUID, чтобы получить уникальное целое число.
String uuid = UUID.randomUUID(). toString(). replaceAll ( "-", ""); //strips '-'