[解決済み] JAVAでUUID文字列を効率的に生成する方法 (UUID.randomUUID().toString()からダッシュを取り除いたもの)
2022-03-13 18:06:44
質問
一意なバイト列を生成する効率的なユーティリティが欲しいです。UUIDは良い候補ですが
UUID.randomUUID().toString()
のようなものが生成されます。
44e128a5-ac7a-4c9a-be4c-224b6bf81b20
というのは良いのですが、ダッシュのない文字列の方が良いですね。
英数字のみからランダムな文字列を生成する効率的な方法を探しています(ダッシュやその他の特殊記号は含まれません)。
どのように解決するのですか?
結局、UUID.javaの実装をベースに自分で何か書くことにしました。なお、私は UUIDを生成しない 代わりに、私が考えた最も効率的な方法で、ランダムな32バイトの16進文字列を作成します。
実装
import java.security.SecureRandom;
import java.util.UUID;
public class RandomUtil {
// Maxim: Copied from UUID implementation :)
private static volatile SecureRandom numberGenerator = null;
private static final long MSB = 0x8000000000000000L;
public static String unique() {
SecureRandom ng = numberGenerator;
if (ng == null) {
numberGenerator = ng = new SecureRandom();
}
return Long.toHexString(MSB | ng.nextLong()) + Long.toHexString(MSB | ng.nextLong());
}
}
使用方法
RandomUtil.unique()
テスト内容
動作確認のためにテストした入力の一部です。
public static void main(String[] args) {
System.out.println(UUID.randomUUID().toString());
System.out.println(RandomUtil.unique());
System.out.println();
System.out.println(Long.toHexString(0x8000000000000000L |21));
System.out.println(Long.toBinaryString(0x8000000000000000L |21));
System.out.println(Long.toHexString(Long.MAX_VALUE + 1));
}
関連
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
java 例外。Javaツールの初期化
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] Java の toString() における StringBuilder と文字列連結の比較
-
[解決済み] Java のメソッド名を文字列で指定した場合、どのように呼び出すのですか?
-
[解決済み] なぜJavaのmainメソッドは静的なのですか?
-
[解決済み] Java int to String - Integer.toString(i) vs new Integer(i).toString()
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
Javaクラスローダーにソースコードから潜り込む
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
org.glassfish.jersey.servlet.ServletContainer
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
java 例外。Javaツールの初期化
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み】パフォーマンスを重視するならば、JavaのString.format()を使うべき?