我正在使用Queue和LinkedList。因此,我在一些教程之后创建了一个基于LinkedList的队列,并运行一个循环来从0到9遍历以添加到这些数字。然而,在完成后我发现我在文件的开头有10个零而不是1。我从头部查出1个零并再次打印但是现在,我有10个或更多1,而不是少于零( 0)。 这是我第一次使用队列,所以可能会出现一些错误! 我的代码如下:
import java.util.LinkedList;
import java.util.Queue;
Queue<Integer> queue = new LinkedList<Integer>();
for(int i = 0; i < 10; i++)
{
System.out.println(i);
queue.add(i);
}
for(int i = 0; i < 10; i++)
{
System.out.print(queue.peek() + " >> ");
}
System.out.println();
System.out.println(queue.poll());
for(int i = 0; i < 10; i++)
{
System.out.print(queue.peek() + " $$ ");
}
System.out.println();
}}
这是我得到的输出集
0 >> 0 >> 0 >> 0 >> 0 >> 0 >> 0 >> 0 >> 0 >> 0 >>
0
1 $$ 1 $$ 1 $$ 1 $$ 1 $$ 1 $$ 1 $$ 1 $$ 1 $$ 1 $$
据我所知,我应该有0&gt;&gt; 1&gt;&gt; 2&gt;&gt; 3 ....而不是第一行中只有零(0)。而后续的最后一行也不应该只有1。 我被困在这里
答案 0 :(得分:1)
你的代码实际上很好。阅读Java documentation on Queues,您会注意到peek()
检索但不删除此队列的头部,或返回 如果此队列为空,则返回null。
多次调用peek不会改变你的队列。但是,如果要删除元素,可以使用<{p}} poll()
检索并删除此队列的头部,如果是,则返回null 队列是空的。
答案 1 :(得分:1)
获取零的原因是你的队列指针指向头部。您需要一个迭代器来遍历队列中的所有项目。
Iterator<Integer> iterator = queue.iterator();
while (iterator.hasNext()){
System.out.println((Integer)iterator.next);
}