Deque と呼ばれるインターフェースは java.util パッケージに存在します。これは、インターフェイス キューのサブタイプです。 Deque は、データ構造の両端からの要素の追加と削除をサポートします。したがって、デキューはスタックまたはキューとして使用できます。スタックは後入れ先出し (LIFO) 操作をサポートし、先入れ先出し操作はキューによってサポートされることがわかっています。 deque は両方をサポートしているため、前述の操作のいずれかを実行できます。デケはの頭字語です 「両端キュー」。
Deque インターフェイス宣言
public interface Deque extends Queue
Java Deque インターフェースのメソッド
方法 | 説明 |
---|---|
ブール値の追加(オブジェクト) | これは、指定された要素をこの両端キューに挿入し、成功時に true を返すために使用されます。 |
ブール値のオファー(オブジェクト) | これは、指定された要素をこの両端キューに挿入するために使用されます。 |
オブジェクトの削除() | この両端キューの先頭を取得して削除するために使用されます。 |
オブジェクトのポーリング() | この両端キューの先頭を取得して削除するために使用されます。この両端キューが空の場合は null を返します。 |
オブジェクト要素() | この両端キューの先頭を取得するために使用されますが、削除はされません。 |
オブジェクトのピーク() | この両端キューの先頭を取得するために使用されますが、削除はされません。この両端キューが空の場合は null を返します。 |
オブジェクトpeekFirst() | このメソッドは両端キューの先頭要素を返します。このメソッドは両端キューから要素を削除しません。デキューが空の場合、このメソッドによって Null が返されます。 |
オブジェクトpeekLast() | このメソッドは両端キューの最後の要素を返します。このメソッドは両端キューから要素を削除しません。デキューが空の場合、このメソッドによって Null が返されます。 |
ブール値 offerFirst(e) | 要素 e をキューの先頭に挿入します。挿入が成功した場合は true が返されます。それ以外の場合は false。 |
オブジェクト offerLast(e) | 要素 e をキューの末尾に挿入します。挿入が成功した場合は true が返されます。それ以外の場合は false。 |
ArrayDeque クラス
Java ではインターフェイスのオブジェクトを作成できないことはわかっています。したがって、インスタンス化には Deque インターフェイスを実装するクラスが必要で、そのクラスは ArrayDeque です。使用状況に応じて伸びたり縮んだりします。また、AbstractCollection クラスも継承します。
ArrayDeque クラスに関する重要な点は次のとおりです。
- Queue とは異なり、両側から要素を追加または削除できます。
- ArrayDeque では Null 要素は許可されません。
- ArrayDeque は、外部同期がない場合、スレッド セーフではありません。
- ArrayDeque には容量制限はありません。
- ArrayDeque は LinkedList や Stack よりも高速です。
ArrayDeque 階層
ArrayDeque クラスの階層は、ページの右側に表示されている図に示されています。
JavaScript 演算子
ArrayDeque クラス宣言
java.util.ArrayDeque クラスの宣言を見てみましょう。
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
Java ArrayDeque の例
ファイル名: ArrayDequeExample.java
import java.util.*; public class ArrayDequeExample { public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Ravi'); deque.add('Vijay'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } }
出力:
Ravi Vijay Ajay
Java ArrayDeque の例: offerFirst() およびpollLast()
ファイル名: DequeExample.java
import java.util.*; public class DequeExample { public static void main(String[] args) { Deque deque=new ArrayDeque(); deque.offer('arvind'); deque.offer('vimal'); deque.add('mukul'); deque.offerFirst('jai'); System.out.println('After offerFirst Traversal...'); for(String s:deque){ System.out.println(s); } //deque.poll(); //deque.pollFirst();//it is same as poll() deque.pollLast(); System.out.println('After pollLast() Traversal...'); for(String s:deque){ System.out.println(s); } } }
出力:
After offerFirst Traversal... jai arvind vimal mukul After pollLast() Traversal... jai arvind vimal
Java ArrayDeque の例: 書籍
ファイル名: ArrayDequeExample.java
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayDequeExample { public static void main(String[] args) { Deque set=new ArrayDeque(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to Deque set.add(b1); set.add(b2); set.add(b3); //Traversing ArrayDeque for(Book b:set){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
出力:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6