我需要在Java中生成10,000个唯一标识符。标识符应为数字和字母的混合,且每个标识符应少于10个字符。有什么想法吗?内置的库将是一个额外的加分。
发布于 2011-02-17 14:15:59
// 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();
}
发布于 2017-03-10 23:32:36
我很晚才回答这个问题,但这才是真正对新读者有用的东西。这是获取随机有效名称的一种非常简单和有效的方法。为此,请在POM.xml中添加maven存储库
<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
发布于 2011-02-17 15:02:02
为什么不使用java.util.UUID?它保证生成唯一的标识符,并且它是标准的:-)。
https://stackoverflow.com/questions/5025651
复制相似问题