for循环执行了10次 每次都创建一个新对象s,并且给s添加了一个元素
实际上你每次只给s集合添加了一个元素,所以打印出来的是不同的s集合内的元素- Random r = new Random();
- for (int i = 1; i <= 10; i++) {
- int num = r.nextInt(20) + 1;
- Set s = new HashSet<Integer>();
- System.out.println(s);//在这里插入一个打印语句就知道为什么你每次打印出来都有相同元素了
- while (!s.add(num)) {
- num = r.nextInt(20) + 1;
- }
- Iterator it = s.iterator();
- while (it.hasNext()) {
- System.out.print(it.next() + ",");
- }
- }
复制代码 我修改了下 这样就OK了- Random r = new Random();
- Set s = new HashSet<Integer>();
- while (s.size() < 10) {
- s.add(r.nextInt(21));
- }
- Iterator<Integer> it = s.iterator();
- while (it.hasNext())
- System.out.println(it.next());
- }
复制代码 |