import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)
* 也不相同,每个字符串长度为10;
* 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判断生成的字符串是否包含重复,
* 在判断长度是不是10,等等.
* 2.其实这题我们可以培养一个习惯,大问题分解小问题解决.
* (1).10个字符串,我们先产生一个10个字符不重复的字符串,
* (2).怎么去重复呢?集合中的HashSet就可以,这题不适合用包含方法做,代码复杂
* (3).字符组成是由(a-zA-Z0-9) 难道我们在随机他们的码表一一判断吗?-------->可以把们放到一
* 个容器中ArrayList
* 在集合的随机索引
*/
public class Demo1 {
public static void main(String[] args) {
List<Character> al = new ArrayList<Character>();
Set<Character> hs = new HashSet<Character>();
Set<String> hs2 = new HashSet<String>();
// 把(a-zA-Z0-9)放进集合中
for (char i = 'a'; i <= 'z'; i++) {
al.add(i);
}
for (char i = 'A'; i <= 'Z'; i++) {
al.add(i);
}
for (char i = '0'; i <= '9'; i++) {
al.add(i);
}
while (true) {
hs.clear();//内循环走完,把存储字符的set清零
while (true) {
int a = (int) (Math.random() * al.size());
//随机下标拿到字符,把字符放进set中保证了字符是唯一的
hs.add(al.get(a));
//当set中有10个数据时,把10个数据打印出来,然后转成字符串存放到另一个set中,跳出循环
if (hs.size() == 10) {
for (char c : hs) {
System.out.print(c);
}
String s = hs.toString();
hs2.add(s);
break;
}
}
System.out.println();
//当存放字符串的set有10个数据时,跳出循环
if (hs2.size() == 10) {
break;
}
}
}
}
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)
* 也不相同,每个字符串长度为10;
* 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判断生成的字符串是否包含重复,
* 在判断长度是不是10,等等.
* 2.其实这题我们可以培养一个习惯,大问题分解小问题解决.
* (1).10个字符串,我们先产生一个10个字符不重复的字符串,
* (2).怎么去重复呢?集合中的HashSet就可以,这题不适合用包含方法做,代码复杂
* (3).字符组成是由(a-zA-Z0-9) 难道我们在随机他们的码表一一判断吗?-------->可以把们放到一
* 个容器中ArrayList
* 在集合的随机索引
*/
public class Demo1 {
public static void main(String[] args) {
List<Character> al = new ArrayList<Character>();
Set<Character> hs = new HashSet<Character>();
Set<String> hs2 = new HashSet<String>();
// 把(a-zA-Z0-9)放进集合中
for (char i = 'a'; i <= 'z'; i++) {
al.add(i);
}
for (char i = 'A'; i <= 'Z'; i++) {
al.add(i);
}
for (char i = '0'; i <= '9'; i++) {
al.add(i);
}
while (true) {
hs.clear();//内循环走完,把存储字符的set清零
while (true) {
int a = (int) (Math.random() * al.size());
//随机下标拿到字符,把字符放进set中保证了字符是唯一的
hs.add(al.get(a));
//当set中有10个数据时,把10个数据打印出来,然后转成字符串存放到另一个set中,跳出循环
if (hs.size() == 10) {
for (char c : hs) {
System.out.print(c);
}
String s = hs.toString();
hs2.add(s);
break;
}
}
System.out.println();
//当存放字符串的set有10个数据时,跳出循环
if (hs2.size() == 10) {
break;
}
}
}
}