黑马程序员技术交流社区

标题: 集合HashSet [打印本页]

作者: lmy518    时间: 2015-11-20 20:08
标题: 集合HashSet
编写一个程序,获取10个1至20的随机数,要求随机数不能重复
这道题用ArrayList集合需要加中间的那个if判断,如果不加的话,打印的有重复的随机数,为什么要加if判断啊?
public static void main(String[] args) {
                //创建ArrayList集合对象
                ArrayList<Integer> list = new ArrayList<Integer>();
                //判断当前集合中的个数 是否为10个
                while(list.size() !=10){
                        //创建1-20之间的随机数
                        int num = (int)(Math.random()*20+1);
                        //判断随机数是否在集合中存在
                        if(!list.contains(num)){
                                //添加随机数到集合
                                list.add(num);
                               
                        }
               
                }
                System.out.println(list);
        }



作者: 小笨笨天    时间: 2015-11-20 21:55
判断是否重复啊  题目不是要求不能重复随机数嘛
作者: yaoyeqing    时间: 2015-11-20 22:01
ArrayList集合特点是能存储有序的,重复的对象,存取元素的顺序一致,如果要存不重复的元素,要用HashSet或者TreeSet
作者: lmy518    时间: 2015-11-20 22:03
小笨笨天 发表于 2015-11-20 21:55
判断是否重复啊  题目不是要求不能重复随机数嘛

if(!list.contains(num))
这行是判断是否重复?我理解成判断集合里是否有这20个随机数,如果没有就用下面那行add方法添加进去。
作者: lmy518    时间: 2015-11-20 22:07
yaoyeqing 发表于 2015-11-20 22:01
ArrayList集合特点是能存储有序的,重复的对象,存取元素的顺序一致,如果要存不重复的元素,要用HashSet或 ...

这个我知道,就是好奇嘛,为啥加个if判断,打印的随机数就不重复了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2