ArrayDequeとLinkedList
基本的にはArrayDequeとLinkedListのどちらも、キュー・スタックとして使えるようだ。
先頭に挿入:addFirst
末尾に挿入:addLast
先頭を取得:getFirst
末尾を取得:getLast
先頭を取得して削除:removeFirst
末尾を取得して削除:removeLast
ここまではArrayDequeとLinkedListで共通しているメソッド。
LinkedListには、これらのメソッドのほかにもindexOfとlastIndexOfがある。ArrayDequeにはない。
優先度つきのPriorityQueueというクラスもあるらしい(使ったことない)。
【補足】
・挿入、削除、取得を両端でしか行わない場合、ArrayDequeのほうが高速に動作するらしい。
・配列の中間にアクセスする場合(containsやindexOfなど)は、LinkedListのほうが速いらしい。
・先頭から2つの要素を順に取得したいというような場合、
int a = deque.getFirst();
deque.removeFirst();
int b = deque.getFirst();
deque.removeFirst();
とするのではなく、removeFirstを上手く使って、
int a = deque.removeFirst();
int b = deque.removeFirst();
とすることで短く簡潔に書ける。