首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:随机生成不同的名称

Java:随机生成不同的名称
EN

Stack Overflow用户
提问于 2011-02-17 14:12:41
回答 8查看 78.7K关注 0票数 19

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-02-17 14:15:59

代码语言:javascript
运行
复制
// 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();
}
票数 21
EN

Stack Overflow用户

发布于 2017-03-10 23:32:36

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

代码语言:javascript
运行
复制
<dependency>
    <groupId>com.github.javafaker</groupId>
    <artifactId>javafaker</artifactId>
    <version>0.12</version>
</dependency>

然后在Java代码中使用Faker类,如下所示

代码语言:javascript
运行
复制
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

票数 64
EN

Stack Overflow用户

发布于 2011-02-17 15:02:02

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

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5025651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档