Java Stack vs Queue性能

时间:2013-01-22 04:39:28

标签: java performance data-structures stack queue

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

另外我注意到java.utils实现扩展了Vector。制作我自己的实现会更快,或者直接使用Vector吗?

4 个答案:

答案 0 :(得分:5)

不推荐使用java.util.Stack类。请改用Deque

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

答案 1 :(得分:2)

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

  

当用作堆栈时,此类可能比Stack快,并且在用作队列时比LinkedList更快。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

一般来说:

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

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