English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、Dequeインターフェース、それを使用する方法及びメソッドについて学びます。
JavaコレクションフレームワークのDequeインターフェースはデュアルキュー(Deque)の機能を提供します。これはQueueインターフェースを継承しています。
通常のキューでは、要素は後ろから追加され、前側から削除されますが、デュアルキューでは、前後から要素を挿入および削除します。
Dequeインターフェースの機能を使用するために、インターフェースを実装したクラスを使用する必要があります:
Javaで、Dequeを使用するためにパッケージjava.util.Dequeをインポートする必要があります。
Deque<String> animal1 = new ArrayDeque<>(); Deque<String> animal2 = new LinkedList<>();
ここでは、ArrayDequeとLinkedListのオブジェクトanimalをそれぞれ作成します1およびanimal2。これらのオブジェクトはDequeインターフェースの機能を使用できます。
DequeはQueueインターフェースを継承するため、それを継承Queueインターフェースのすべてのメソッド。
Queueインターフェースで利用可能なメソッドに加えて、Dequeインターフェースには以下のメソッドも含まれています:
addFirst() - デュアルキューの先頭に指定された要素を追加します。デュアルキューがいっぱいであれば、例外を発生させます。
addLast() - デュアルキューの末尾に指定された要素を追加します。デュアルキューがいっぱいであれば、例外を発生させます。
offerFirst() - デュアルキューの先頭に指定された要素を追加します。デュアルキューがいっぱいであれば、falseを返します。
offerLast() - 指定された要素をダブルエンドキューの末尾に追加します。ダブルエンドキューが満員の場合はfalseを返します。
getFirst() - ダブルエンドキューの最初の要素を返します。ダブルエンドキューが空の場合は例外を発生させます。
getLast() - ダブルエンドキューの最後の要素を返します。ダブルエンドキューが空の場合は例外を発生させます。
peekFirst() - ダブルエンドキューの最初の要素を返します。ダブルエンドキューが空の場合はnullを返します。
peekLast() - ダブルエンドキューの最後の要素を返します。ダブルエンドキューが空の場合はnullを返します。
removeFirst() - ダブルエンドキューの最初の要素を返し、削除します。ダブルエンドキューが空の場合は例外を発生させます。
removeLast() - ダブルエンドキューの最後の要素を返し、削除します。ダブルエンドキューが空の場合は例外を発生させます。
pollFirst() - ダブルエンドキューの最初の要素を返し、削除します。ダブルエンドキューが空の場合はnullを返します。
pollLast() - ダブルエンドキューの最後の要素を返し、削除します。ダブルエンドキューが空の場合はnullを返します。
Java CollectionsフレームワークのStackクラスがスタックの実装を提供しています。
しかし、Dequeを使用してスタックとして推奨されます而不是Stackクラスこれは、Stackのメソッドが同期されているためです。
以下はDequeインターフェースが提供する、スタックを実現するためのメソッドです:
push() - ダブルエンドキューの先頭に要素を追加
pop() - ダブルエンドキューの先頭から要素を削除
peek() - ダブルエンドキューの先頭から要素を返す
import java.util.Deque; import java.util.ArrayDeque; class Main { public static void main(String[] args) { // ArrayDequeクラスを使用してDequeを作成 Deque<Integer> numbers = new ArrayDeque<>(); //要素をDequeに追加 numbers.offer(1); numbers.offerLast(2); numbers.offerFirst(3); System.out.println("Deque: " + numbers); //Dequeの要素にアクセス int firstElement = numbers.peekFirst(); System.out.println("最初の要素: " + firstElement); int lastElement = numbers.peekLast(); System.out.println("最後の要素: " + lastElement); //Dequeから要素を削除 int removedNumber1 = numbers.pollFirst(); System.out.println("最初の要素を削除: " + removedNumber1); int removedNumber2 = numbers.pollLast(); System.out.println("最後の要素を削除: " + removedNumber2); System.out.println("更新後のDeque: " + numbers); } }
出力結果
Deque: [3, 1, 2] 最初の要素: 3 最後の要素: 2 最初の要素を削除: 3 最後の要素を削除: 2 更新後のDeque: [1]
詳細については、以下のウェブサイトにアクセスしてくださいJava ArrayDeque。