我在弄清楚如何生成 [1;200) 范围长度内的唯一字符串时遇到了一些困难。我想出的代码附在下面:
public static String generateRandString() {
String STRING_TOKENS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
StringBuilder stringBuilder = new StringBuilder();
Random random = new Random();
while(stringBuilder.length() <= 200) {
int index = (int) random.nextFloat() * STRING_TOKENS.length();
stringBuilder.append(STRING_TOKENS.charAt(index));
}
return stringBuilder.toString();
}
问题:
请求 20 个生成的字符串,每次返回“AAAAAAAA”字符串,长度可能为 200 个符号
预期输出:
A7898as7sd6as5da
as87asd67
768asjhg435GhA900324
2g2j3h4gjhgAKL*78a9dd879234
3B234
1
一些限制:
- 无需其他库(Google Guava 或 Apache Common)
- 仅限 JDK 1.6
非常感谢您的贡献!
最佳答案
试试这个!
for (int i = 0; i < 10; i++)
System.out.println(randomString(ThreadLocalRandom.current().nextInt(0, 200)));
static String randomString(int len) {
String AB = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
Random rnd = new Random();
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++)
sb.append(AB.charAt(rnd.nextInt(AB.length())));
return sb.toString();
}
如果你想生成唯一的字符串。您可以使用java.util.UUID
import java.util.UUID;
String uuid = UUID.randomUUID().toString();
关于java - 生成特定长度范围内唯一的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45106901/