黑马程序员技术交流社区
标题:
为什么会生成一样的数?
[打印本页]
作者:
aoejhx
时间:
2016-1-12 11:24
标题:
为什么会生成一样的数?
public static void main(String[] args) {
for (int i = 0; i <=10 ; ) {
Random r =new Random();
HashSet<Integer> hs = new HashSet<>();
if(hs.add(r.nextInt(20)+1))
i++;
System.out.print(hs);
}
}
}
作者:
正阳门下
时间:
2016-1-12 17:36
奇怪了,可能你需要看下hashcode或equals方法是不是重写了
作者:
胆小的狙击手
时间:
2016-1-12 19:36
你创建了10个HashSet,往10个HashSet中添加一个数字再打印,而不是往一个Set里添加是个数字,当然有可能出现重复的了
作者:
正阳门下
时间:
2016-1-13 00:34
public static void main(String[] args) {
//demo1();
HashSet<Integer> hs = new HashSet<>();
Random r = new Random();
for (int i = 0; i < 10; i++) {
hs.add(r.nextInt(20));
}
System.out.println(hs);
}
原因是因为你把建立集合放到了for循环里面,等于是你建立了十个集合,所以会出现重复的数字;起初没注意看,还以为是没重写方法,后来想了想,这些基本数据都是写好了的.
作者:
OliverLC
时间:
2016-1-13 01:55
原因是,你这个代码其实是创建了11个HashSet集合,每次就遍历往一个集合里加一个元素,尽管HashSet具有元素不重复的特点,但是前提是在同一个集合里的元素,而你这得到的结果是11个集合里每个集合的第一个元素的值~所以就可能出现重复的值.
作者:
aoejhx
时间:
2016-1-13 10:35
哦,明白了。谢谢楼上各位的解答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2