Java:随机生成不同的名称

2022-09-02 04:55:56

我需要在Java中生成10,000个唯一标识符。标识符应为数字和字母的混合,并且每个少于 10 个字符。有什么想法吗?内置库将是一个额外的加分项。


答案 1

我回答这个问题已经很晚了,但这对新读者来说才是真正有用的。这是获取随机 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


答案 2
// 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();
}