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

cha*_*owo 70 java string random char

我有一个名为对象Student,它有studentName,studentId,studentAddress,等有关studentId,我必须生成随机字符串包括七个数字charaters,例如.

studentId = getRandomId();
studentId = "1234567" <-- from the random generator.
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 130

生成随机字符串很简单 - 只需使用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);
}
Run Code Online (Sandbox Code Playgroud)

现在,为了唯一性,您需要将生成的字符串存储在某处.你如何做到这将取决于你的应用程序的其余部分.

  • 为什么你将Random作为参数传递? (4认同)
  • @chandra:是的,确切地说.给它一个你想要选择的字符串.所以,如果你只想要数字,你会传入"0123456789".如果您只想要大写字母,请通过"ABCDEFGHIJKLMNOPQRSTUVWXYZ"等. (3认同)
  • 使用`UUID.randomUUID().toString()`这更正确吗?如果是这样,为什么? (3认同)
  • @ Is7aq:它提供了对输出的更多控制,包括使用的字符和字符串的长度. (3认同)
  • @RockOnGom:对不起,我以前错过了这条评论.对于这样的事情,我认为`Random`实际上是一个依赖 - 在这里接受它允许调用者决定是否使用预置的`Random`来获得可重复的结果(例如用于测试),`SecureRandom`以使其适合出于安全目的等 (2认同)

Dav*_*oko 53

这非常好:

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/RandomStringUtils.html

如果您想要唯一性(很有可能),请考虑使用MD5或SHA哈希.


Par*_*rth 17

您还可以使用java.util包中的UUID类,该类返回32位字符String的随机uuid.

java.util.UUID.randomUUID().toString()

http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html

  • 这与"7个数字字符的随机字符串"不同. (3认同)

小智 5

Random ran = new Random();
int top = 3;
char data = ' ';
String dat = "";

for (int i=0; i<=top; i++) {
  data = (char)(ran.nextInt(25)+97);
  dat = data + dat;
}

System.out.println(dat);
Run Code Online (Sandbox Code Playgroud)