需求:
编写一个程序,获取10个1至20的随机数,要求随机数不能重复。并把最终的随机数输出到控制台。
分析:
- 创建一个Random对象,用来生成随机数
- 创建一个hashset对象,泛型存储
- 循环生成10个1-20的随机数
- 对它们进行排序
- 遍历输出。Collections.sort
实现代码:
package edu.xalead;
import java.util.*;
public class jiangxu {
/**
*生成10个1到20之间的不重复的随机数并降序输出
*/
public static void main(String[] args) {
Random r = new Random();
HashSet<Integer> ss = new HashSet<>();//因为泛型里里面用引用类型,所以<>里面的int类型用其Integer来自动装箱
//系统生成随机数
while (ss.size() < 10) { //当has的长度小于10时就继续生成随机数
ss.add(r.nextInt(20) + 1);//获取1至20的随机数,由于nextInt(20)的取值是0-19,所以后面+1以达要求
}
//遍历集合
List<Integer> s = new ArrayList<>(ss);//这里将set集合转换为list集合
class remade implements Comparator<Integer> { //内部类实现Compartor接口,重写compare方法实现逆序。
@Override
public int compare(Integer o1, Integer o2) {
return o1 > o2 ? -1 : 1;
}
}
Collections.sort(s, new remade());
System.out.println(s);
}
}
输出结果: