我正在寻找一个快速queue
Java 中的实现。我看到LinkedList
实施Queue
接口,但它只会像LinkedList
正确的?有没有一种方法可以让队列更快,特别是对于add
(我只需要poll
, add
并检查empty
)。
以后我可能还需要一个PriorityQueue
但尚未。
如果多个线程要访问队列,则考虑使用ArrayBlockingQueue http://java.sun.com/javase/6/docs/api/java/util/concurrent/ArrayBlockingQueue.html。否则看看ArrayDeque http://java.sun.com/javase/6/docs/api/java/util/ArrayDeque.html。来自ArrayDeque
API:
这个类可能比
当用作堆栈时使用堆栈,速度更快
用作队列时比 LinkedList 好。
具体来说,如果现有数组有足够的容量,基于数组的队列实现可以减少调整底层数组大小的需要,从而使向队列的添加速度通常比LinkedList
。意识到ArrayBlockingQueue
是一个有界实现,而ArrayDeque
将根据需要调整大小。
另一方面是LinkedList
通常会提供更紧凑的表示,特别是在队列大幅增长和收缩的情况下。例如,如果您将 10,000,000 个元素添加到ArrayDeque
然后删除 9,999,999 个元素,底层数组的长度仍为 10,000,000,而LinkedList
就不会遇到这个问题。
实际上,对于对非阻塞队列的单线程访问,我倾向于支持LinkedList
。我想性能差异可以忽略不计,你无论如何也不会注意到差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)