データ構造
ArrayDeque クラスは、両端キューの線形実装クラスです。
次のような特徴があります。
- ArrayDeque は、配列に実装された両端キューです。
- ArrayDeque のデキューとエンキューは、先頭ポインターと末尾ポインターをループし、配列を使用することによって実現されます。
- ArrayDeque の容量が足りない場合は拡張され、その都度容量が 2 倍になります。
- ArrayDeque はスタックとして直接使用できます。スタックとして使用すると Stack よりもパフォーマンスが向上し、キューとして使用すると LinkedList よりもパフォーマンスが向上します。
- 容量のサイズに制限はなく、必要に応じて容量を拡張できます。
- 非スレッドセーフなキュー、同期戦略なし、マルチスレッドセーフなアクセスはサポートされません。
- フェイルファストの機能があり、null 値を保存できず、双方向の反復子のトラバーサルをサポートします。
メソッドリスト
タイプ | 方法 | タイプ |
---|---|---|
要素を追加 | public void addFirst(E e) | 要素を配列の先頭に追加します |
public void addLast(E e) | 配列の後に要素を追加します | |
public boolean offerFirst(E e) | 配列の前に要素を追加し、追加が成功したかどうかを返します。 | |
public boolean offerLast() | 配列の後に要素を追加し、追加が成功したかどうかを返します。 | |
要素の削除 | public EpollFirst() | 最初の要素を削除し、削除された要素の値、または要素が null の場合は null を返します。 |
public E RemoveFirst() | 最初の要素を削除し、削除された要素の値を返します。要素が null の場合、例外がスローされます。 | |
public EpollLast() | 最後の要素を削除し、削除された要素の値、または null の場合は null を返します。 | |
public E RemoveLast() | 最後の要素を削除し、削除された要素の値を返します。それが null の場合、例外がスローされます。 | |
public boolean RemoveFirstOccurrence(Object o) | 指定された要素の最初の出現を削除します | |
public boolean RemoveLastOccurrence(Object o) | 指定された要素の最後に出現した要素を削除します | |
要素を取得する | public E getFirst() | 最初の要素を取得します。例外がない場合は例外がスローされます |
public E getLast() | 最後の要素を取得します。例外がない場合は例外がスローされます | |
キュー操作 | public boolean add(E e) | キューの最後に要素を追加します |
パブリック ブール オファー(E e) | 要素をキューの最後に追加し、それが成功したかどうかを返します | |
パブリック E 削除() | キュー内の最初の要素を削除し、その要素の値を返します。要素が null の場合、例外がスローされます (実際、基礎となる呼び出しは、removeFirst() です) | |
パブリック E ピーク() | null を返す場合は最初の要素を取得します | |
スタック操作 | public void Push(E e) | 要素をスタックの先頭に追加します |
パブリック E ポップ() | スタックの最上位要素を削除します。スタックの最上位に要素がない場合は、例外がスローされます。 | |
他の | public int size() | キュー内の要素の数を取得します |
パブリックブール値 isEmpty() | キューが空かどうかを確認する | |
public イテレータ iterator() | イテレータ、前から後ろに繰り返します | |
public IteratordecendingIterator() | イテレータ、後ろから前へ繰り返す | |
public boolean contains(Object o) | 要素がキューに存在するかどうかを確認します | |
public Object[] toArray() | 配列に変換する | |
public T[] toArray(T[] a) | 配列定数に変換する | |
パブリックボイドクリア() | 空のキュー | |
public ArrayDeque clone() | クローン(コピー) |
列に並んでいるとき
Deque<E> queue = new ArrayDeque<>();
queue.size()
E a=queue.addLast()
E b=queue.removeFirst()
スタックとして使用する場合
Deque<E> stack = new ArrayDeque<>();
stack.size()
E a=stack.addLast()
E b=stack.removeLast()