我需要一个简单的 FIFO 实现队列来存储一堆整数(如果它是泛型实现,我不介意)。
已经在 Trove/Guava 库或 Trove/Guava 库中为我烘焙过的任何东西java.util
?
我需要一个简单的 FIFO 实现队列来存储一堆整数(如果它是泛型实现,我不介意)。
已经在 Trove/Guava 库或 Trove/Guava 库中为我烘焙过的任何东西java.util
?
是的。队列
LinkedList是最简单的具体实现。
下面是使用 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
}
ArrayDeque
可能是 JDK 中最快的基于对象的队列;Trove 有TIntQueue
接口,但我不知道它的实现在哪里。
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
Queue
Collection
是一个在 Java中扩展的接口。FIFO
它具有支持架构所需的所有功能。
对于具体实现,您可以使用LinkedList
. LinkedList 实现Deque
,而后者又实现Queue
. 所有这些都是java.util
包的一部分。
有关带有示例示例的方法的详细信息,您可以参考Java 中基于 FIFO 的队列实现。
PS:上面的链接转到我的个人博客,其中有更多详细信息。