English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Java フロー制御

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 例外処理

Java リスト(List)

Java Queue(キュー)

Java Mapコレクション

Java Setコレクション

Java 入出力(I/O)

Java Reader/Writer

Java その他のトピック

Java Dequeインターフェース

このチュートリアルでは、Dequeインターフェース、それを使用する方法及びメソッドについて学びます。

JavaコレクションフレームワークのDequeインターフェースはデュアルキュー(Deque)の機能を提供します。これはQueueインターフェースを継承しています。

デュアルキューの動作原理

通常のキューでは、要素は後ろから追加され、前側から削除されますが、デュアルキューでは、前後から要素を挿入および削除します

Dequeを実装したクラス

Dequeインターフェースの機能を使用するために、インターフェースを実装したクラスを使用する必要があります:

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() - ダブルエンドキューの先頭から要素を返す

ArrayDequeクラスにおけるDequeの実装

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