📅  最后修改于: 2023-12-03 15:31:34.499000             🧑  作者: Mango
在 Java 中,我们可以通过多种方式来生成随机唯一数。下面介绍其中的几种方法。
UUID(Universally Unique Identifier)是一种用于标识信息的唯一 ID。Java 中提供了 UUID 类用于生成 UUID。
import java.util.UUID;
public class RandomUniqueNumberGenerator {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
System.out.println("Random UUID String = " + randomUUIDString);
}
}
输出结果类似于:
Random UUID String = 1b9df393-ebb6-4b48-9f78-5d5a5f5d5b5f
SecureRandom 是具有强加密码学安全性的随机数生成器。可以使用 SecureRandom 生成随机数,再将其转换为字符串。
import java.security.SecureRandom;
import java.math.BigInteger;
public class RandomUniqueNumberGenerator {
public static void main(String[] args) {
SecureRandom random = new SecureRandom();
String randomString = new BigInteger(130, random).toString(32);
System.out.println("Random String = " + randomString);
}
}
输出结果类似于:
Random String = 2hiyraizn9ns6gmbzc6c7qm6jh4n6bvt2c3q3qzzjd01e
Apache Commons Lang 是一个常用的 Java 库,其中包含了许多实用的方法。其中的 RandomStringUtils 类提供了随机生成字符串的功能。
import org.apache.commons.lang3.RandomStringUtils;
public class RandomUniqueNumberGenerator {
public static void main(String[] args) {
String randomString = RandomStringUtils.randomAlphanumeric(8);
System.out.println("Random String = " + randomString);
}
}
输出结果类似于:
Random String = j7vrRQtD
ThreadLocalRandom 是 Java 7 中新增的随机数生成器。使用该类可以生成高效的随机数。
import java.util.concurrent.ThreadLocalRandom;
public class RandomUniqueNumberGenerator {
public static void main(String[] args) {
int randomInt = ThreadLocalRandom.current().nextInt();
System.out.println("Random Int = " + randomInt);
}
}
输出结果类似于:
Random Int = -1196897915
这一方法是结合了前两种方法,可以生成更加随机和安全的唯一数。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
public class RandomUniqueNumberGenerator {
public static void main(String[] args) throws NoSuchAlgorithmException {
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++) {
sb.append(Integer.toString(random.nextInt()));
}
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hashValue = messageDigest.digest(sb.toString().getBytes());
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < hashValue.length; i++) {
sb2.append(Integer.toString((hashValue[i] & 0xff) + 0x100, 16).substring(1));
}
String randomString = sb2.toString();
System.out.println("Random String = " + randomString);
}
}
输出结果类似于:
Random String = a5e5c84cda6759d2502d914e13c0a47f797809e876acc8e99e378c721fcd0e1a
以上就是 Java 中几种生成随机唯一数的方法。根据需求可以选择适合自己的方法。