84

我需要一个简单的 FIFO 实现队列来存储一堆整数(如果它是泛型实现,我不介意)。

已经在 Trove/Guava 库或 Trove/Guava 库中为我烘焙过的任何东西java.util

4

5 回答 5

92

是的。队列

LinkedList是最简单的具体实现。

于 2012-04-18T16:24:33.020 回答
66

下面是使用 java 的内置 FIFO 队列的示例代码:

public static void main(String[] args) {
    Queue<Integer> myQ = new LinkedList<Integer>();
    myQ.add(1);
    myQ.add(6);
    myQ.add(3);
    System.out.println(myQ);   // 1 6 3
    int first = myQ.poll();    // retrieve and remove the first element
    System.out.println(first); // 1
    System.out.println(myQ);   // 6 3
}
于 2012-09-03T16:59:26.790 回答
15

ArrayDeque可能是 JDK 中最快的基于对象的队列;Trove 有TIntQueue接口,但我不知道它的实现在哪里。

于 2012-04-18T16:29:30.397 回答
7

LinkedList可以用作队列 - 但您需要正确使用它。这是一个示例代码:

@Test
public void testQueue() {
    LinkedList<Integer> queue = new LinkedList<>();
    queue.add(1);
    queue.add(2);
    System.out.println(queue.pop());
    System.out.println(queue.pop());
}

输出 :

1
2

请记住,如果您使用push而不是add(您很可能会直观地这样做),这将在列表的前面添加元素,使其表现得像一个堆栈。

因此,只有与 add 一起使用时,这才是一个队列。

试试这个 :

@Test
public void testQueue() {
    LinkedList<Integer> queue = new LinkedList<>();
    queue.push(1);
    queue.push(2);
    System.out.println(queue.pop());
    System.out.println(queue.pop());
}

输出 :

2
1
于 2019-12-22T02:53:16.377 回答
6

QueueCollection是一个在 Java中扩展的接口。FIFO它具有支持架构所需的所有功能。

对于具体实现,您可以使用LinkedList. LinkedList 实现Deque,而后者又实现Queue. 所有这些都是java.util包的一部分。

有关带有示例示例的方法的详细信息,您可以参考Java 中基于 FIFO 的队列实现

PS:上面的链接转到我的个人博客,其中有更多详细信息。

于 2013-12-11T18:52:26.980 回答