Java 6 からdequeことArrayDequeが実装されています。 dequeって聞き慣れない! とか思うかもしれないですが「Double Ended Queue」で両端キューです。 STLではvector,list,dequeはよく使われると思うのですが、Javaではなかったんですね。 特徴としては、 先頭への挿入(削除) 終端への挿入(削除) がO(1)で出来ます。 LinkedListでも同様のことができますが、LinkedListより高速で省メモリです。 (ただし、先頭と終端以外への挿入はLinkedListより遅いO(n)になります) また、ランダムアクセスも高速です。 アルゴリズム的にはリングバッファでvector(ArrayList)がわっかになっているようなイメージです。 headとtailの位置を覚えており、 配列(バッファ)の中のどこが先頭でどこが終端か、 を覚え