Raj*_*pta 70 java queue collections
我需要一个简单的FIFO实现队列来存储一堆int(如果它是泛型实现,我不介意).
在我java.util或Trove/Guava图书馆里为我准备过的东西了吗?
Joh*_*n B 78
是啊.队列
LinkedList是最简单的具体实现.
Dav*_*dNg 54
以下是使用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
}
Run Code Online (Sandbox Code Playgroud)
Lou*_*man 13
ArrayDeque可能是JDK中最快的基于对象的队列; Trove有TIntQueue接口,但我不知道它的实现在哪里.
一个链表可以作为一个队列-但你需要使用它的权利。这是一个示例代码:
@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());
}
Run Code Online (Sandbox Code Playgroud)
输出 :
1
2
Run Code Online (Sandbox Code Playgroud)
请记住,如果您使用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());
}
Run Code Online (Sandbox Code Playgroud)
输出 :
2
1
Run Code Online (Sandbox Code Playgroud)
Queue是Collection在Java 中扩展的接口。它具有支持FIFO体系结构所需的所有功能。
对于具体的实现,您可以使用LinkedList。LinkedList实现Deque,该实现又实现Queue。所有这些都是java.util包装的一部分。
有关示例示例方法的详细信息,可以参考Java中基于FIFO的队列实现。
PS:上面的链接转到我的个人博客,其中包含有关此主题的更多详细信息。