java生成大写字母+数字的字符串且不重复
时间: 2023-11-22 15:05:30 浏览: 208
您可以使用如下代码来生成指定长度的大写字母和数字的随机字符串,且保证字符串不重复:
```java
import java.util.concurrent.ThreadLocalRandom;
public class RandomStringGenerator {
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public static String generate(int length) {
StringBuilder sb = new StringBuilder(length);
ThreadLocalRandom random = ThreadLocalRandom.current();
for (int i = 0; i < length; i++) {
int index = random.nextInt(CHARACTERS.length());
sb.append(CHARACTERS.charAt(index));
}
return sb.toString();
}
}
```
您可以在需要生成随机字符串的地方调用 `RandomStringGenerator.generate(length)` 方法来获取指定长度的随机字符串。如果需要保证生成的字符串不重复,您可以使用一个 `Set` 来存储已经生成的字符串,每次生成新的字符串时,先判断该字符串是否已经存在于 `Set` 中,如果不存在,则将该字符串加入到 `Set` 中,否则重新生成新的字符串,直到生成的字符串不重复为止。
```java
import java.util.HashSet;
import java.util.Set;
public class UniqueRandomStringGenerator {
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
private static final Set<String> GENERATED_STRINGS = new HashSet<>();
public static String generate(int length) {
String randomString = RandomStringGenerator.generate(length);
while (GENERATED_STRINGS.contains(randomString)) {
randomString = RandomStringGenerator.generate(length);
}
GENERATED_STRINGS.add(randomString);
return randomString;
}
}
```
在上面的代码中,`UniqueRandomStringGenerator.generate(length)` 方法会先调用 `RandomStringGenerator.generate(length)` 方法生成一个指定长度的随机字符串,然后判断该字符串是否已经存在于 `GENERATED_STRINGS` 集合中,如果已经存在,则重新生成新的字符串,直到生成的字符串不重复为止。最后将该字符串加入到 `GENERATED_STRINGS` 集合中,并返回该字符串。
阅读全文