编写一个方法:乱序输出0~99共一百个正整数。要求:输出的正整数不能重复。
时间: 2024-09-07 13:06:27 浏览: 19
要实现不重复地乱序输出0到99共一百个正整数,我们可以使用Java的集合框架中的`Set`接口,例如`HashSet`,因为`HashSet`不允许存储重复的元素。以下是一个实现的示例:
```java
import java.util.Collections;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class ShuffleNumbers {
public static void main(String[] args) {
shuffleNumbers(100);
}
public static void shuffleNumbers(int limit) {
Set<Integer> numbers = new HashSet<>();
// 尝试填充集合,直到它包含所有唯一的数字
while (numbers.size() < limit) {
numbers.add(new Random().nextInt(limit));
}
// 将集合中的元素复制到列表中
List<Integer> shuffledList = new ArrayList<>(numbers);
// 打乱列表中的元素顺序
Collections.shuffle(shuffledList);
// 输出乱序后的数字
for (int number : shuffledList) {
System.out.println(number);
}
}
}
```
解释:
1. 创建一个`HashSet`实例来存储不重复的整数。
2. 使用`while`循环和`HashSet`的`add`方法,随机生成0到99的整数并尝试加入到`HashSet`中。由于`HashSet`不允许重复,所以当集合中已经有这个数字时,`add`方法会返回`false`,循环会继续直到集合中有100个唯一的数字。
3. 创建一个`ArrayList`,并将其初始化为与`HashSet`相同大小的集合,然后使用`Collections.copy`方法将`HashSet`中的元素复制到`ArrayList`中。
4. 使用`Collections.shuffle`方法来打乱`ArrayList`中元素的顺序。
5. 最后通过一个增强型`for`循环来遍历列表并输出结果。