Gibt es eine Möglichkeit, zufällige und eindeutige 8 Zeichen lange Zeichenfolgen in Java zu erzeugen?
%Vor% und dann ist Id zum Beispiel wf41Av5g
Die Eigenschaft Eindeutigkeit hängt vom Bereich ab, in dem Sie sie verwenden. Java kann sicherlich zufällige Zeichenfolgen generieren. Wenn Sie jedoch eine universell eindeutige ID verwenden möchten, können Sie UUID
Klasse.
Wenn die Eindeutigkeit wichtig ist, können Sie nicht einfach Strings erzeugen. Es gibt keine Möglichkeit, eine Kollision zu vermeiden. Sogar UUIDs können kollidieren, obwohl es ziemlich unwahrscheinlich ist.
Sie können die verwendeten Zeichenfolgen protokollieren. Wenn Sie eine neue zufällige Zeichenfolge generieren, überprüfen Sie den Datensatz, um festzustellen, ob es sich um ein Duplikat handelt. Ist dies der Fall, verwerfen Sie ihn und versuchen Sie es erneut.
Allerdings würde ich vorschlagen, dass Sie keine Zufallszahlen generieren. Behalten Sie stattdessen einen Zähler und verschlüsseln Sie seine Ausgabe, um zufällig aussehende Zahlen zu erzeugen. Diese werden garantiert nie kollidieren, wenn Sie dies richtig machen. Siehe eine frühere Antwort von mir oder eins von Rossum
Sie können diese Zeichenfolge auf Basis der aktuellen Uhrzeit erstellen.
Zum Beispiel:
2014 06 04 16 21 20 79 --- & gt; 14 06 04 16 21 20 79
Dann können Sie alle zwei Ziffern (außer den letzten zwei) für ein alphanumerisches Zeichen mithilfe der Tabelle ( Ссылка ) übersetzen alle von ihnen sind kleiner als 59)
dann erhalten Sie
14 - O
06 - G
04 - E
16 - Q
21 - v
20 - U
OGEQVU79 & lt; - genau 8 Zeichen. Ein bisschen kompliziert, aber es funktioniert, wenn Sie Ihre Funktion nicht oft als 0,01 s aufrufen würden
Inzwischen müssen Sie Ihre Antwort erhalten haben, aber für diejenigen, die diese Seite erreichen, versuchen Sie diesen Code:
öffentliche Klasse RandomValueXML {
%Vor%}
Hier gewährleistet die Verwendung von Set die Einzigartigkeit, während die Verwendung von HashSet eine bessere Leistung beim Lesen und Schreiben gewährleistet.
gibt Ihnen einzigartige 8 Zeichen String im HEX-Format.