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

标签 java arraylist

这是我第一次在这里问问题。

我想用 10 个从 0 到 9 的唯一 int 数字创建 ArrayList。 我执行后续步骤:

  1. 创建空数组列表
  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);
}

但我在控制台中看到的只是无尽的过程。

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

最佳答案

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

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

这将以线性时间运行,因为 ArrayListRandomAccess

关于java - 在java中创建一个包含10个唯一数字的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953528/

相关文章:

java - 使用另一台 JBoss 服务器上经过身份验证的用户在远程 JBoss 服务器上进行 JNDI 查找

java - Swing: Action 监听器的作用

java - 使用 MongoDB runCommand 方法

java - 像间隔 java 一样将元素插入到 ArrayList

java - spring cloud stream rabbit 的退避设置

java - JUnit 集成测试的 'IT.java' 文件名后缀(而不是 'Test.java' )是一个约定吗?

java - HashMap 包含多个具有相同值的不同键?

java - 从内存分配的角度来看 ArrayList 与 LinkedList

Java - 从 map 中的列表中检索单个值

java - 在 B 类中使用 A 类的数组列表