注目記事

【Javaコード入門】コレクションフレームワーク_⑫ArrayDeque

キュー/スタック構造 – ArrayDequeクラス

ArrayDequeは両端キューとも呼ばれ、先頭末尾の双方から要素を出し入れできるキューの実装です。ArrayDequeを利用することで、キュー(FIFO:First In First Out)やスタック(LIFO:Last In First Out)といったデータ構造を表現できます。
ArrayDequeクラスで利用できる主なメソッドには、以下のようなものがあります。

ArrayDequeクラスの主なメソッド
種類 先頭 末尾 概要
挿入 addFirst(e) addLast(e) 先頭/末尾に要素を追加
削除 removeFirst() removeLast() 先頭/末尾から要素を取り出し
検査 getFirst() getLast() 先頭/末尾の要素を取得

削除メソッドでは要素を取得すると共に削除するのに対して、検査メソッドでは要素を取得するのみでキューから削除しません。
以下は、ArrayDequeでキュー/スタックを実装する例です。キューは末尾から要素を追加し、先頭から要素を取り出すことで、スタックは、末尾から要素を追加し、末尾から要素を取り出すことで、それぞれ表現できます。

CollQueue.java

  1. package com.example.mynavi.collection;
  2.  
  3. import java.util.ArrayDeque;
  4. import java.util.Deque;
  5.  
  6. public class CollQueue {
  7.   public static void main(String[] args) {
  8.     // キュー構造
  9.     var q = new ArrayDeque<String>();
  10.     q.addLast("AAAAA");
  11.     q.addLast("BBBBB");
  12.     q.addLast("CCCCC");
  13.     System.out.println(q);  // 結果:[AAAAA, BBBBB, CCCCC]
  14.     System.out.println(q.removeFirst());    // 結果:AAAAA
  15.     System.out.println(q);  // 結果:[BBBBB, CCCCC]
  16.  
  17.       // スタック構造
  18.     var s = new ArrayDeque<String>();
  19.     s.addLast("AAAAA");
  20.     s.addLast("BBBBB");
  21.     s.addLast("CCCCC");
  22.     System.out.println(s);  // 結果:[AAAAA, BBBBB, CCCCC]
  23.     System.out.println(s.removeLast()); // 結果:CCCCC
  24.     System.out.println(s);  // 結果:[AAAAA, BBBBB]
  25.   }
  26. }
コレクションフレームワーク_目次
コレクションフレームワーク
コレクションを初期化する
synchronizedList/synchronizedMap/synchronizedSetメソッド
ArrayListクラス
asListメソッド
toArrayメソッド
LinkedList
HashMap
TreeMap
NavigableMap
HashSet
ArrayDeque

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。