キュー/スタック構造 – 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
- package com.example.mynavi.collection;
- import java.util.ArrayDeque;
- import java.util.Deque;
- public class CollQueue {
- public static void main(String[] args) {
- // キュー構造
- var q = new ArrayDeque<String>();
- q.addLast("AAAAA");
- q.addLast("BBBBB");
- q.addLast("CCCCC");
- System.out.println(q); // 結果:[AAAAA, BBBBB, CCCCC]
- System.out.println(q.removeFirst()); // 結果:AAAAA
- System.out.println(q); // 結果:[BBBBB, CCCCC]
- // スタック構造
- var s = new ArrayDeque<String>();
- s.addLast("AAAAA");
- s.addLast("BBBBB");
- s.addLast("CCCCC");
- System.out.println(s); // 結果:[AAAAA, BBBBB, CCCCC]
- System.out.println(s.removeLast()); // 結果:CCCCC
- System.out.println(s); // 結果:[AAAAA, BBBBB]
- }
- }
- コレクションフレームワーク_目次
- コレクションフレームワーク
- コレクションを初期化する
- 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万部を超える。