2014-10-08 52 views
1

我必须为类编写一个堆栈,并且当我理解堆栈如何工作的概念时,我没有被告知它们是使用数组还是链接列表或其他方法创建的?大多数堆栈是如何创建的?应该从数组或链接列表java创建堆栈?

+0

链接列表似乎更合适。它具有良好的增长行为,并且不需要通过索引来访问元素。 – DwB 2014-10-08 18:15:10

+2

最好的实现取决于应用程序的要求。 – megadan 2014-10-08 18:29:03

回答

4

ArrayDeque是堆栈概念的可靠的类实现。这个类以最有效的方式实现了堆栈。请查看各种方法的细节的类实现。

http://www.docjar.com/html/api/java/util/ArrayDeque.java.html

更具体地说,看public E pollFirst(){...}public void addFirst(E e)

+0

您能否告诉我们一个源代码,显示一个deque比一个简单的链表更有效率?我毫不怀疑java.util.Stack会更快,因为它也是基于数组的,但是你能否支持它比LinkedList更快的说法? – Tim 2014-10-08 19:11:10

+0

答案似乎与这个问题完全无关。 OP询问他应该选择哪个实现选项,而不是要使用哪个JRE类。 – Durandal 2014-10-08 19:13:44

+0

@Durandal我不会使用“完全不相关”,因为我已经指示用户了解最先进的实现是什么样子。 – 2014-10-08 19:18:46

1

这两个选项,数组和链表都适用。

链接列表可能更简单,因为您不必担心数组大小。另一方面,基于数组的实现可能具有更好的运行时行为,并且可以更容易调试(因为它比调试器中的链表更容易查看数组)。

选择任何你感到舒服的东西。