1

所以我有一个可以在堆栈或队列中的列表。两者之间有性能差异吗?

我还注意到 java.utils 实现扩展了 Vector。自己实现会更快,还是直接使用 Vector?

4

4 回答 4

7

java.util.Stack 类已弃用。改用双端队列

就性能而言,这取决于实施,

于 2013-01-22T04:45:57.590 回答
2

Stack 和 Vector 都是同步的。将 java.util.ArrayDeque 同时用作 Stack 和 Queue,请参阅 API:

这个类在作为栈使用时可能比 Stack 快,作为队列使用时比 LinkedList 快。

于 2013-01-22T05:16:26.970 回答
1

这取决于使用模式和具体实现。

一般来说:

  • 如果要按接收顺序(先进先出或 FIFO)处理传入项目流,请使用队列。适合工作清单和处理请求。
  • 如果您只想从堆栈顶部推送和弹出(后进先出或 LIFO),使用堆栈。适用于递归算法。

PS我不建议使用任何扩展或利用的旧实现 java.util.Vector。现在有许多更好的实现可用,具体取决于您的确切用例。

于 2013-01-22T04:53:35.387 回答
1

性能取决于您要使用的数据结构(arraylist、linkedlist 等)以及您将执行的所有操作。

因此,根据这一点,您可以决定您的数据结构。建议您通过 Java API 了解不同 API 的优缺点。

于 2013-01-22T04:47:06.797 回答