0

我有以下代码。

    int clock;
    ArrayDeque<Integer> q = new ArrayDeque<Integer>();
    int customer = 1;
    Random r = new Random();

    for (clock = 0; clock <= 99; clock++) { 
        q.add(customer);
        customer++;
    }

根据我目前所知道的,它应该给我一个列表,或者在这种情况下是一个双端队列,大小为 100,有 100 个客户。

当我打印大小时,它验证了我的理论,但是当我打印内容时,它只返回索引 0-49。

    for (int i = 0; i < q.size() ; i++) {
        System.out.println("index "+ i + " "+ q.remove());
    }

打印arraydeque 与打印其他arraylist 不同吗?

4

1 回答 1

3

问题是您与 q.size() 进行比较,每次迭代都会减小。这是因为 remove() 实际上修改了队列。

您可以使用迭代器在不修改队列的情况下打印元素:

int i = 0;
for (int elem : q) {
    System.out.println("index "+ i++ + " "+ elem);
}
于 2011-07-09T18:50:23.773 回答