さて、私はJavaコードでUIDを生成する方法を検討してきました(それらのほとんどはstackoverflowにも来ています)。タイムスタンプを使用するため、Java の UUID を使用して一意の ID を作成するのが最善です。しかし、私の問題は、それが 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% の一意の ID が保証されますか? それとも、数字が繰り返される可能性があると思いますか? また、乱数をランダムな位置に挿入して重複した数字を作成する代わりに、最初または最後に挿入することもできます。これは、私の UID の必要な長さを完成させるためのものです。ただし、13 文字未満の UID が必要な場合、これはおそらく機能しない可能性があります。
何かご意見は?