public class test { public static void main(String[] args) { getRandomNum1(); getRandomNum2(); getRandomNum3(); getRandomNum4(); getRandomNum5(); } /** * 对数组里面的数字进行循环判断,如果有不做处理,继续循环。没有就添加。 */ private static void getRandomNum1() { int [] arr = new int[5]; int count = 0; while(count < 5) { int num = (int) (Math.random() * (10)) ; boolean flag = true; for (int j = 0; j < 5; j++) { if(num == arr[j]){ flag = false; break; } } if(flag){ arr[count] = num; count++; } } System.out.println("随机数1:"+Arrays.toString(arr)); } /** * 判断是否存在。不在就添加,在就不处理。继续循环 */ private static void getRandomNum2() { List list = new ArrayList(); while(list.size() < 5) { int num = (int) (Math.random() * (10)) ; if(!list.contains(num)) { list.add(num); } } System.out.println("随机数2:"+Arrays.toString(list.toArray())); } /** * 利用set特性.自动去重 */ private static void getRandomNum3() { Set set = new TreeSet<>(); while(set.size() < 5) { int num = (int) (Math.random() * (10)) ; set.add(num); } System.out.println("随机数3:"+Arrays.toString(set.toArray())); } /** * 利用map特性做空判断 */ private static void getRandomNum4() { Map map = new HashMap<>(); while(map.size() < 5) { int num = (int) (Math.random() * (10)) ; if(map.get(num) == null ) { map.put(num,num); } } System.out.println("随机数4:"+map.values()); } /** * 批量生成随机数,取随机的5个 */ private static void getRandomNum5() { int[] arrs = new int[20]; for (int i = 0; i < arrs.length; i++) { arrs[i] = i ; } int[] arr = new int[5]; boolean[] flag = new boolean[arrs.length]; Random random=new Random(); int j = 0; for (int i = 0; i < arr.length; i++) { do { j = random.nextInt(flag.length); } while (flag[j]); //标记,如果取出来过就继续do while 只有不符合while才会继续 flag[j] = true; arr[i]=arrs[j]; } System.out.println("随机数5:"+Arrays.toString(arr)); } }