Java HashSet 处理不重复随机数


HashSet 处理不重复随机数

  • HashSet 无序且不重复,使用 HashSet 可以更为简单地处理不重复随机数问题,以双色球为例:
import java.util.Random;
import java.util.TreeSet;

public class Test {
    public static void main(String[] args) {
        //6个不重复1~33之间的数字,这里用TreeSet是因为可以自动排序
        TreeSet<Integer> treeSet = new TreeSet<>();
        Random rd = new Random();
        //当set中有6个数停止循环
        while(treeSet.size()<6) {
            //1~33之间的随机数
            int num = rd.nextInt(33)+1;
            //添加进去,由treeSet自动去重
            treeSet.add(num);
        }

        //1个1~16的特别号码,题目没说能不能重复,我们2种都实现
        //1.如果能重复,那随便随机一个就行了
        //special:特别号码
        int special = rd.nextInt(16)+1;

        //2.如果不能重复,那我们继续复用while循环
        while(treeSet.contains(special)) {//只要已经包含就一直循环,直到不包含为止
            special = rd.nextInt(16)+1;
        }
        System.out.println("6个1~33不重复的号码:"+treeSet);
        System.out.println("1个1~16的特别号码:"+special);
    }
}
/*
输出
6个1~33不重复的号码:[5, 12, 14, 17, 26, 30]
1个1~16的特别号码:1
 */
发布了242 篇原创文章 · 获赞 244 · 访问量 9611

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104830427