Gibt es eine Möglichkeit zum generieren einer zufälligen UUID, die besteht nur aus zahlen?
Java-UUID-Klasse erzeugt eine zufällige UUID. Aber diese besteht aus Buchstaben und zahlen. Für einige Anwendungen brauchen wir nur die zahlen. Gibt es eine Möglichkeit zum generieren von zufälligen UUID, die nur aus zahlen in Java ?
UUID.randomUUID();
InformationsquelleAutor rosh | 2011-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht wollen, eine zufällige Zahl, sondern eine UUID mit nur zahlen verwenden:
in diesem Fall Links aufgefüllt, um 40 Nullen...
Ergebnisse für:
UUID : b55081fa-9cd1-48c2-95d4-efe2db322a54
in:
UUID : 0241008287272164729465721528295504357972
InformationsquelleAutor Chris Eibl
Warum nicht einfach generieren
Random
Nummer und legen Sie es in das format, das Sie möchten?Diese nicht geben Ihnen Einzigartigkeit aus der box. (d.h. Sie implementieren müssen, um überprüfen jede generation und retry-Logik)
Wo andere Lösungen, die sich UUID bits und konvertieren Sie zu Nummer, granulare in der Einzigartigkeit. je nach Anwendungsfall könnten Sie immer noch wollen, um zu überprüfen, Einzigartigkeit mit diesem Ansatz.
Random
ist nicht universell einzigartig.Random-Nummer ist nicht eindeutig.
Habe ich nicht, es zu erwähnen ? @pheonix
InformationsquelleAutor Jigar Joshi
Obwohl das original-Plakat zu dieser Frage markiert @Jigar Joshi Frage als die beste Antwort, möchte ich hinzufügen, dass es eine Begründung für die Verwendung UUIDs anstatt Zufallszahlen in bestimmten Fällen. Der Unterschied ist, dass UUIDs sind (universell) einzigartig (daher der name), während zufällige zahlen nicht. Es ist nur eine Frage der Wahrscheinlichkeit, ob man die gleiche Zahl zweimal oder sogar noch öfter, wenn das erzeugen von Zufallszahlen, aber das wird nie passieren, mit UUIDs. Daher würde ich prüfen @Chris Eibl Antwort als die beste.
InformationsquelleAutor foobar
InformationsquelleAutor jkschneider
Für das Protokoll: UUIDs sind in der Tat 128-bit-zahlen.
Was Sie sehen, als eine alphanumerische Zeichenfolge ist die Darstellung, dass die 128-bit-Zahl in hexadezimal-Ziffern (0..9A..F).
Die wirkliche Lösung ist es, verwandeln die Zeichenfolge in das entsprechende 128-bit-Zahl. Und zu speichern, benötigen Sie zwei Longs (Long hat 64 bit).
InformationsquelleAutor Pablo Pazos
Warum mit der UUID-Klasse, wenn Sie Sie nicht benötigen eine UUID? Es klingt wie Sie brauchen nur eine zufällige Nummer, die kann erreicht werden, indem die
java.util.Random
Klasse.InformationsquelleAutor Malax
Random
ist nicht universell einzigartig. Wenn Sie verwenden möchtenUUIDs
im Gegensatz zu denRandom
Klasse, wie vorgeschlagen, die von anderen, können Sie einfach einen regex verwenden, um Streifen aus alles außer Numerik aus der UUID. Probieren Sie etwas wie dieses,String id = UUID.randomUUID().toString().replaceAll("[^0-9]", "");
Das würde sich dramatisch erhöhen die Wahrscheinlichkeit für eine Kollision.
Yeah, collision rate wird höher sein.
InformationsquelleAutor Scrotch
Call
hashCode()
auf die UUID zu bekommen, eine eindeutige ganze Zahl.hashCode()
ist nicht invertierbaren Funktion. Sollte nie verwendet werden, für Einzigartigkeit.Eine schlecht funktionierende, aber vollkommen korrekte Umsetzung der
hashCode()
wärereturn 1;
InformationsquelleAutor Graham Borland
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//Streifen '-'
InformationsquelleAutor user2337092