Java:随机生成不同的名称

wel*_*lly 13 java random unique

我需要在Java中生成10,000个唯一标识符.标识符应该是数字和字母的混合,每个少于10个字符.有任何想法吗?内置的图书馆将是一个额外的加分.

Gau*_*Lad 34

我很晚才回答这个问题,但这对新读者来说真的很有用.这是获取随机VALID名称的一种非常简单有效的方法.为此,请在POM.xml中添加maven存储库

<dependency>
    <groupId>com.github.javafaker</groupId>
    <artifactId>javafaker</artifactId>
    <version>0.12</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然后在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();
Run Code Online (Sandbox Code Playgroud)

尝试使用标准打印结果 System.out.println();

有关Faker Lib的更多参考信息

  • 这是黄金。谢谢! (2认同)
  • 超级图书馆。最好 (2认同)

cor*_*iKa 18

// 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();
}
Run Code Online (Sandbox Code Playgroud)

  • 不,他们真的没有.上面的示例仅用于算法目的.我希望任何使用它的人都不会复制和粘贴它,而是将所示的概念应用到他们的解决方案中. (5认同)

小智 8

为什么不使用java.util.UUID?它保证生成唯一标识符,它是标准的:-).