34

のドキュメントにArrayDequeは次のように書かれています:

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

ArrayDequeをスタックとして使用する場合と を使用する場合の違いについては言及されていませんArrayListArrayList次のようにスタックとして使用できます。

list.add(object);                      // push
object = list.remove(list.size() - 1); // pop

ArrayListをこの方法でのみ使用すると、 のパフォーマンスが よりも悪いことがわかりましたArrayDeque。この違いの原因は何ですか?確かに、それはsize()?への呼び出しだけではありません。内部的には、ArrayListとの両方ArrayDequeが必要に応じてより大きな配列に置き換えられる を使用して実装されているObject[]ため、パフォーマンスはほぼ同じであるはずです。

4

2 に答える 2