Java:随机生成不同的名称
我需要在Java中生成10,000个唯一标识符。标识符应为数字和字母的混合,并且每个少于 10 个字符。有什么想法吗?内置库将是一个额外的加分项。
我需要在Java中生成10,000个唯一标识符。标识符应为数字和字母的混合,并且每个少于 10 个字符。有什么想法吗?内置库将是一个额外的加分项。
我回答这个问题已经很晚了,但这对新读者来说才是真正有用的。这是获取随机 VALID 名称的一种非常简单有效的方法。为此,请在 POM 中添加 maven 存储库.xml
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>0.12</version>
</dependency>
然后在 Java 代码中使用如下所示的 Faker 类
Faker faker = new Faker();
String name = faker.name().fullName();
String firstName = faker.name().firstName();
String lastName = faker.name().lastName();
String streetAddress = faker.address().streetAddress();
尝试使用标准打印结果System.out.println();
更多参考 Faker Lib
// class variable
final String lexicon = "ABCDEFGHIJKLMNOPQRSTUVWXYZ12345674890";
final java.util.Random rand = new java.util.Random();
// consider using a Map<String,Boolean> to say whether the identifier is being used or not
final Set<String> identifiers = new HashSet<String>();
public String randomIdentifier() {
StringBuilder builder = new StringBuilder();
while(builder.toString().length() == 0) {
int length = rand.nextInt(5)+5;
for(int i = 0; i < length; i++) {
builder.append(lexicon.charAt(rand.nextInt(lexicon.length())));
}
if(identifiers.contains(builder.toString())) {
builder = new StringBuilder();
}
}
return builder.toString();
}