java - 生成特定长度范围内唯一的字符串

标签 java arrays string random generator

我在弄清楚如何生成 [1;200) 范围长度内的唯一字符串时遇到了一些困难。我想出的代码附在下面:

public static String generateRandString() {

    String STRING_TOKENS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    StringBuilder stringBuilder = new StringBuilder();
    Random random = new Random();
    while(stringBuilder.length() <= 200) {
        int index = (int) random.nextFloat() * STRING_TOKENS.length();
        stringBuilder.append(STRING_TOKENS.charAt(index));
    }

    return stringBuilder.toString();
}

问题:

请求 20 个生成的字符串,每次返回“AAAAAAAA”字符串,长度可能为 200 个符号

预期输出:

A7898as7sd6as5da
as87asd67
768asjhg435GhA900324
2g2j3h4gjhgAKL*78a9dd879234
3B234
1

一些限制:

  1. 无需其他库(Google Guava 或 Apache Common)
  2. 仅限 JDK 1.6

非常感谢您的贡献!

最佳答案

试试这个!

for (int i = 0; i < 10; i++)
        System.out.println(randomString(ThreadLocalRandom.current().nextInt(0, 200)));


static String randomString(int len) {
    String AB = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    Random rnd = new Random();
    StringBuilder sb = new StringBuilder(len);
    for (int i = 0; i < len; i++)
        sb.append(AB.charAt(rnd.nextInt(AB.length())));
    return sb.toString();
}

如果你想生成唯一的字符串。您可以使用java.util.UUID

import java.util.UUID;
String uuid = UUID.randomUUID().toString();

关于java - 生成特定长度范围内唯一的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45106901/

相关文章:

java - 使用 Spring Data Pageable 的 JPA Criteria 查询总和

java - struts 中的无效 token

C++ - 截断变量文件名中 double 的小数位

java - 如何以可读格式打印 double ?

java - 在阵列上移动玩家

c++ - 使用 C++ 将 IP 地址 append 到 char*

php - 访问多个 php 数组值

python - 测试回文的各种方法的性能 [Python]

Java:拆分以逗号分隔的字符串但忽略括号中的逗号

java - 如何在远程系统上并行执行