Размер и содержание ArrayDeque - PullRequest
0 голосов
/ 09 июля 2011

У меня есть следующий код.

    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());
    }

Отличается ли print arraydeque от печати других массивов?

1 Ответ

3 голосов
/ 09 июля 2011

Проблема в том, что вы сравниваете с q.size (), который уменьшается на каждой итерации. Это связано с тем, что метод remove () фактически изменил очередь.

Вы можете распечатать элементы без изменения очереди, используя итератор:

int i = 0;
for (int elem : q) {
    System.out.println("index "+ i++ + " "+ elem);
}
...