Java ArrayDeque クラス:初心者のガイド

はじめに

こんにちは、未来のJavaの魔法使いたち!今日、私たちはJavaのArrayDequeクラスのワクワクする冒険に出かけます。さて、あなたは何を考えているかしら?「Deque?それはおしゃれなフランス語の単語?」そうではありません!プログラミングの世界では、deque(読み「デック」)はダブルエンディングキューの意味です。それはカーニバルの乗り物の並ぶようなもので、両端から人々が加わるまたは離れることができます。クールでしょう?

Java -  ArrayDeque

ArrayDequeはJavaのDequeインターフェースの実装で、プログラミングツールキットにおいて強力なツールです。それはデータの保存と操作のためのスイスアーミーナイフみたいなものです。だから、シートベルトを締めて、一緒に飛び込みましょう!

ArrayDeque クラスの宣言

ArrayDequeを使用する前に、それをどのように宣言するかを知る必要があります。それは簡単です。以下がその方法です:

import java.util.ArrayDeque;

ArrayDeque<Integer> numbers = new ArrayDeque<Integer>();

この例では、Integerオブジェクトを格納するArrayDequeを作成しています。でも、心配しないでください。ArrayDequeは柔軟で、どんなオブジェクト型でも使用できます!

ArrayDeque クラスのコンストラクタ

ArrayDequeには3つのコンストラクタがあります。コンストラクタを異なる方法でデックを構築することを考えてください:

  1. ArrayDeque(): 16の要素の初期キャパシティを持つ空のデックを作成します。
  2. ArrayDeque(int numElements): 指定された初期キャパシティを持つデックを作成します。
  3. ArrayDeque(Collection<? extends E> c): 指定されたコレクションの要素を含むデックを作成します。

これらを実際に見てみましょう:

// デフォルトコンストラクタ
ArrayDeque<String> fruits1 = new ArrayDeque<>();

// 初期キャパシティを持つコンストラクタ
ArrayDeque<String> fruits2 = new ArrayDeque<>(20);

// コレクションを持つコンストラクタ
ArrayList<String> fruitList = new ArrayList<>();
fruitList.add("Apple");
fruitList.add("Banana");
ArrayDeque<String> fruits3 = new ArrayDeque<>(fruitList);

ArrayDeque クラスのメソッド

次に、ArrayDequeで最も一般的に使用されるメソッドのいくつかを見ていきましょう。これらのメソッドは、スイスアーミーナイフが行える様々なトリックに思えます。

メソッド 説明
addFirst(E e) デックの先頭に要素を追加します
addLast(E e) デックの末尾に要素を追加します
offerFirst(E e) デックの先頭に要素を追加します(ブール値を返します)
offerLast(E e) デックの末尾に要素を追加します(ブール値を返します)
removeFirst() 先頭の要素を削除し、それを返します
removeLast() 末尾の要素を削除し、それを返します
pollFirst() 先頭の要素を削除し、それを返します(空の場合はnull)
pollLast() 末尾の要素を削除し、それを返します(空の場合はnull)
getFirst() 先頭の要素を削除せずに返します
getLast() 末尾の要素を削除せずに返します
peekFirst() 先頭の要素を削除せずに返します(空の場合はnull)
peekLast() 末尾の要素を削除せずに返します(空の場合はnull)

ArrayDeque から要素を追加および削除する例

新たに得た知識を実際の例で使ってみましょう。タスクを両端から追加または削除できるTo-Doリストを管理すると想象してください。

import java.util.ArrayDeque;

public class ToDoList {
public static void main(String[] args) {
ArrayDeque<String> tasks = new ArrayDeque<>();

// タスクの追加
tasks.addFirst("目覚める");
tasks.addLast("歯を磨く");
tasks.offerFirst("アラームを設定");
tasks.offerLast("寝る");

System.out.println("現在のタスク: " + tasks);

// タスクの削除
String firstTask = tasks.removeFirst();
String lastTask = tasks.removeLast();

System.out.println("最初の完了タスク: " + firstTask);
System.out.println("最後の完了タスク: " + lastTask);
System.out.println("残りのタスク: " + tasks);

// タスクの確認
String nextTask = tasks.peekFirst();
String finalTask = tasks.peekLast();

System.out.println("次のタスク: " + nextTask);
System.out.println("最後のタスク: " + finalTask);
}
}

以下がその説明です:

  1. まず、tasksというArrayDequeを作成します。
  2. addFirst(), addLast(), offerFirst(), offerLast()を使ってタスクを追加します。デックの両端にタスクを追加できることに注意してください。
  3. removeFirst()removeLast()を使って両端からタスクを削除します。
  4. 最後に、peekFirst()peekLast()を使って、削除せずに先頭と末尾のタスクを確認します。

出力

このコードを実行すると、以下のような出力が得られます:

現在のタスク: [アラームを設定, 目覚める, 歯を磨く, 寝る]
最初の完了タスク: アラームを設定
最後の完了タスク: 寝る
残りのタスク: [目覚める, 歯を磨く]
次のタスク: 目覚める
最後のタスク: 歯を磨く

そして、それが完成です!ArrayDequeを作成し、操作し、探求したことになります。すごく素晴らしいでしょう?

覚えておきましょう、練習は成功のもとです。独自のArrayDequeを作成して、異なるメソッドを試してみてください。プレイリストマネージャーやブラウザ履歴トラッカーや、シンプルなアンドゥ/レドゥシステムを作ることができます!

ArrayDequeは良い友のように、必要なときにはいつもそこにあり、両方の側から助けをしてくれます。それで、恥ずかしないで、よりよく知り合いましょう。そしてすぐに、プロのようにデックを使えるようになります!

コーディングを楽しんで、未来のJavaのマスターたち! ??

Credits: Image by storyset