【发布时间】:2011-10-06 13:45:20
【问题描述】:
我认为它们非常相似...而我们什么时候需要使用堆栈或队列,为什么不直接使用 ArrayList 或 LinkedList 来代替它们呢?
【问题讨论】:
-
你应该读一本好的数据结构书。简而言之:这些限制可以提高性能并增加理解代码的简单性。
-
因为 Java 的设计者不擅长 API。栈应该是一个接口,所以可以有不同的栈实现。例如基于数组列表的堆栈和基于链表的堆栈。取而代之的是,他们采用了捷径并将 Vector 子类化来制作某种 franken-stack,该堆栈暴露了其父级的许多不正确的实现细节。他们试图通过创建一个双端队列(即另一个堆栈实现)来纠正这个问题,但只会造成更多的混乱。