java随机生成1000个8位字符串,要求数字+大写字母组成且不能重复
时间: 2024-03-20 13:42:43 浏览: 215
好的,以下是Java代码实现:
```java
import java.util.*;
public class RandomStringsGenerator {
public static void main(String[] args) {
String str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random random = new Random();
Set<String> set = new HashSet<String>();
while (set.size() < 1000) {
StringBuilder sb = new StringBuilder(8);
Set<Character> charSet = new HashSet<Character>();
while (charSet.size() < 8) {
int index = random.nextInt(str.length());
char c = str.charAt(index);
if (!charSet.contains(c)) {
charSet.add(c);
sb.append(c);
}
}
String randomString = sb.toString();
if (!set.contains(randomString)) {
set.add(randomString);
}
}
System.out.println("随机生成的1000个8位字符串为:");
for (String randomString : set) {
System.out.println(randomString);
}
}
}
```
代码解释:
1. 首先定义包含数字和大写字母的字符串 `str`。
2. 创建一个 `Random` 对象 `random`,用于生成随机数。
3. 创建一个 `Set` 集合 `set`,用于存储已经生成的字符串,以确保不重复。
4. 使用 `while` 循环,不断生成随机字符串,直到 `set` 集合中有 1000 个不重复的字符串为止。
5. 在每次生成随机字符串时,创建一个新的 `StringBuilder` 对象 `sb`,用于存储随机生成的字符。
6. 使用另一个 `Set` 集合 `charSet`,用于存储已经生成的字符,以确保不重复。
7. 使用 `while` 循环,不断生成随机字符,直到 `charSet` 集合中有 8 个不重复的字符为止。
8. 将随机字符添加到 `sb` 中。
9. 将 `sb` 转换为字符串类型,并检查 `set` 集合中是否已经包含该字符串,如果没有,则将其添加到 `set` 中。
10. 最后,遍历 `set` 集合,并输出生成的随机字符串。
阅读全文