在java中创建一个包含10个唯一数字的数组

Ole*_*Nos 0 java arraylist

这是我第一次问这个问题.

我想用0到9的10个唯一的int数字制作ArrayList.我接下来的步骤:

  1. 创建空Arraylist
  2. 添加第一个随机数,以便稍后检查重复
  3. 接下来我创建新的随机int值,检查我是否已经在ArrayList中使用了这个值.如果我有 - 我尝试另一个号码,如果我没有 - 我添加这个号码.
  4. 如果我得到10个数字,我会停止循环

我的代码:

public static void main(String[] args) {

    Random rd = new Random();
    ArrayList<Integer> list = new ArrayList<Integer>();

    int q = rd.nextInt(10);
    list.add(q);

    while (true) {
        int a = rd.nextInt(10);
        for (int b=0;b<list.size();b++){
            if (a == list.get(b)) break;
            else list.add(a);
        }
        if (list.size() == 10) break;
    }
    System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)

但我在控制台看到的只是无休止的过程.

问题是 - 是否有另一种方法可以使ArrayList具有10个唯一数字(0到9)?

rge*_*man 11

使用数字Collections.shuffle初始化后使用ArrayList.

ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++)
{
    list.add(i);
}
Collections.shuffle(list);
Run Code Online (Sandbox Code Playgroud)

因为这将在线性时间运行ArrayListRandomAccess.