Java中的队列和双端队列的区别

57

它们之间有什么区别?我知道

队列是设计用来在队列末尾插入元素,并从队列开头删除元素的,而双端队列表示您可以从队列的两端插入和删除元素。

但哪个更有效率?

此外,它们之间有什么区别?因为我对它们有一点了解,就像上面所说的那样,但我想更多地了解它们。


1
效率用来干什么? - Junyoung Clare Jang
我已经看过Javadoc,但仍然没有理解很多。所以我在这里问,是否有人可以帮助我... - user6503581
就像Thor所说的那样。此外:使用grepcode java queuegrepcode java dequeue同时搜索谷歌,以查看它们的实现差异。 - JayC667
@ Junyoung Clare Jang 我的意思是速度或哪一个占用更多的内存? - user6503581
2个回答

68

Deque是“双端队列”的缩写。普通队列是从一端添加元素,从另一端取出元素。而双端队列可以在任一端添加或取出元素,这使它更加灵活;例如,您可以将其用作堆栈。

就效率而言,这实际上取决于具体的实现方式。但一般来说,您不会指望deque比queue表现更好,因为(单端)队列可能以一种不允许在“错误”的一端添加或删除对象的方式实现。而任何deque的实现也将作为队列的实现。


我不明白...哪个更高效?我们能不能一直使用deque而不是queue? - Bogdan
4
我的回答表示,双端队列不会比普通队列更高效。 - Dawood ibn Kareem

7

Deque和queue是可以用不同方式实现的抽象数据类型。要讨论性能,您必须指定想要比较的实现以及您感兴趣的操作。更好的方法是使用应用程序的工作负载在您将要使用的环境中(硬件、操作系统、JVM版本)进行基准测试。

由于每个deque也是queue,因此通常可以说deques最多只能与queue一样好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接