1

したがって、スタックまたはキューに入れることができるリストがあります。2つの間にパフォーマンスの違いはありますか?

また、java.utils の実装が Vector を拡張していることにも気付きました。独自の実装を作成するか、ベクターを直接使用する方が速いでしょうか?

4

4 に答える 4

7

java.util.Stack クラスは非推奨です。代わりにDequeを使用してください。

パフォーマンスに関しては、実装に依存しますが、

于 2013-01-22T04:45:57.590 に答える
2

スタックとベクトルは両方とも同期されます。代わりに java.util.ArrayDeque を Stack と Queue の両方として使用します。API を参照してください。

このクラスは、スタックとして使用すると Stack よりも高速になり、キューとして使用すると LinkedList よりも高速になる可能性があります。

于 2013-01-22T05:16:26.970 に答える
1

パフォーマンスは、使用するデータ構造 (arraylist、linkedlist など) と、実行するすべての操作によって異なります。

それに応じて、データ構造を決定できます。Java API を調べて、さまざまな API の長所と短所を知ることをお勧めします。

于 2013-01-22T04:47:06.797 に答える
1

これは、使用パターンと特定の実装によって異なります。

一般に:

  • 受信した順序 (先入れ先出しまたは FIFO) で受信アイテムのストリームを処理する場合は、キューを使用します。作業リストと処理要求に適しています。
  • スタックの一番上からのみプッシュおよびポップする場合は、スタックを使用します(後入れ先出しまたは LIFO)。再帰アルゴリズムに適しています。

PSを拡張または利用する古い実装を使用することはお勧めしません java.util.Vector。正確なユースケースに応じて、現在利用可能なはるかに優れた実装が多数あります。

于 2013-01-22T04:53:35.387 に答える