Java 中的快速队列
我正在寻找Java中的快速实现。我看到它实现了接口,但它只会像一个权利一样快吗?有没有办法有一个队列,特别是(我只需要,并检查)。下线我可能还需要一个,但还没有。queue
LinkedList
Queue
LinkedList
add
poll
add
empty
PriorityQueue
我正在寻找Java中的快速实现。我看到它实现了接口,但它只会像一个权利一样快吗?有没有办法有一个队列,特别是(我只需要,并检查)。下线我可能还需要一个,但还没有。queue
LinkedList
Queue
LinkedList
add
poll
add
empty
PriorityQueue
如果多个线程将访问队列,请考虑使用 ArrayBlockingQueue
。否则,请看一下ArrayDeque
。从 API:ArrayDeque
当用作堆栈时,此类可能比 Stack 快,在用作队列时,它可能比 LinkedList 快。
具体而言,如果现有阵列具有足够的容量,则基于阵列的队列实现减少了调整基础阵列大小的需要,从而使添加到队列的速度通常比 快。请注意,这是一个有界实现,而将根据需要调整大小。LinkedList
ArrayBlockingQueue
ArrayDeque
另一方面,它通常会提供更紧凑的表示形式,尤其是在队列大量增长和收缩的情况下。例如,如果向 a 添加了 10,000,000 个元素,然后删除了 9,999,999 个元素,则基础数组的长度仍为 10,000,000,而 a 不会出现此问题。LinkedList
ArrayDeque
LinkedList
实际上,对于对非阻塞队列的单线程访问,我倾向于 。我想性能差异可以忽略不计,无论如何你都不会注意到这种差异。LinkedList
我看到LinkedList实现了Queue接口,但它只会像LinkedList一样快,对吧?
盯着源代码,LinkedList是 Queue.add,Queue.poll和Queue.peek操作的O(1)。
我希望这足够快。