我有以下代码。
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个客户的deque,大小为100。
当我打印尺寸时,它验证了我的理论,但是当我打印内容时,它只返回索引0-49。
for (int i = 0; i < q.size() ; i++) {
System.out.println("index "+ i + " "+ q.remove());
}
打印arraydeque与打印其他arraylists不同吗?
答案 0 :(得分:3)
问题是您与q.size()进行比较,q.size()会在每次迭代时减少。这是因为remove()实际上修改了队列。
您可以使用迭代器打印元素而无需修改队列:
int i = 0;
for (int elem : q) {
System.out.println("index "+ i++ + " "+ elem);
}