java生成不重复的随机数
1.使用List类型容器import java.util.ArrayList;import java.util.List;public class ListDemo {public static void main(String[] args) {for(int i = 0;i<10;i++){int num = (int)(Math.random()*10+1);System.out.pr
·
1.使用List类型容器
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
for(int i = 0;i<10;i++){
int num = (int)(Math.random()*10+1);
System.out.println(num);
}
System.out.println("====================================");
List<Integer> list = new ArrayList<>();
while(true){
int num = (int)(Math.random()*10+1);
//判断元素是否存在
if(!list.contains((num))){
list.add(num);
}
if(list.size()==10){
break;
}
}
for (Integer i:list){
System.out.println(i);
}
}
}
使用List类型容器生成不重复的随机数时,需要使用List自带的contains方法来判断元素是否重复。
但是Set类型容器不允许元素重复,所以使用Set类型容器会更加简单。
import java.util.HashSet;
import java.util.Set;
public class SetDemo {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
while (true){
int num = (int)(Math.random()*10+1);
set.add(num);//Set类型元素不允许有重复元素
if(set.size()==10){
break;
}
}
for (Integer i:set){
System.out.println(i);
}
}
}
结果看到确实生成了不重复的10个元素,但是结果却是有序的。但其实HashSet类并不会提供排序功能,只是Integer类型HashCode方法是直接返回值本身,所以结果是有序的。如果生成随机数的范围和容器大小不同时可能更加符合需求。
import java.util.HashSet;
import java.util.Set;
public class SetDemo {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
while (true){
int num = (int)(Math.random()*10+1);
set.add(num);//Set类型元素不允许有重复元素
if(set.size()==5){
break;
}
}
for (Integer i:set){
System.out.println(i);
}
更多推荐
已为社区贡献1条内容
所有评论(0)