如何在Java中生成随机字符串

2022-08-31 13:33:46

我有一个名为 的对象,它有 、 、 等。对于 ,我必须生成由七个数字字符组成的随机字符串,例如。StudentstudentNamestudentIdstudentAddressstudentId

studentId = getRandomId();
studentId = "1234567" <-- from the random generator.

我必须确保没有重复的ID。


答案 1

生成随机字符串很容易 - 只需使用包含您希望可用的所有字符的字符串,例如java.util.Random

public static String generateString(Random rng, String characters, int length)
{
    char[] text = new char[length];
    for (int i = 0; i < length; i++)
    {
        text[i] = characters.charAt(rng.nextInt(characters.length()));
    }
    return new String(text);
}

现在,为了获得唯一性,您需要将生成的字符串存储在某个位置。如何做到这一点实际上取决于应用程序的其余部分。


答案 2

这非常好:

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/RandomStringUtils.html - 类似 .RandomStringUtils.randomNumeric(7)

有 10^7 个等概率(如果未损坏)不同的值,因此唯一性可能是一个问题。java.util.Random