在Java

时间:2016-01-23 14:40:38

标签: java data-structures queue

我正在使用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。 我被困在这里

2 个答案:

答案 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);
}