(1) JavaのDequeの概要や使い方+サンプルプログラムもご紹介
(1-1) Dequeとは?
(1-2) Dequeを実装したクラス
(1-3) Dequeの使い方
(1-4) Dequeのサンプルプログラム
(1) JavaのDequeの概要や使い方+サンプルプログラムもご紹介
(1-1) Dequeとは?
■メソッド名 ※カッコ()内は別名 |
■作用箇所 | ■機能 | ■例外時 |
addFirst (push) |
先頭 | 追加(挿入) | 例外を発生 |
offerFirst | 先頭 | 追加(挿入) | falseやnullを返却 |
removeFirst (pop, remove) |
先頭 | 取得(削除) | 例外を発生 |
pollFirst (poll) |
先頭 | 取得(削除) | falseやnullを返却 |
getFirst (element) |
先頭 | 参照(検査) | 例外を発生 |
peekFirst (peek) |
先頭 | 参照(検査) | falseやnullを返却 |
addLast (add) |
末尾 | 追加(挿入) | 例外を発生 |
offerLast (offer) |
末尾 | 追加(挿入) | falseやnullを返却 |
removeLast | 末尾 | 取得(削除) | 例外を発生 |
pollLast | 末尾 | 取得(削除) | falseやnullを返却 |
getLast | 末尾 | 参照(検査) | 例外を発生 |
peekLast | 末尾 | 参照(検査) | falseやnullを返却 |
(1-2) Dequeを実装したクラス
Dequeインターフェイスを実装したクラスは、以下がJavaのAPIとして用意されています。
(1-3) Dequeの使い方+サンプルプログラム
STEP1:Dequeのインスタンス作成
Dequeのインスタンスは、Dequeインターフェイスを実装したLinkedListクラスやArrayDequeクラスをインスタンス化する事で作れます。
Deque<String> dq1 = new ArrayDeque<>(); Deque<String> dq2 = new LinkedList<>();
STEP2:各メソッドを利用してキューやスタックの操作
(1-4) Dequeのサンプルプログラム
「キュー」のサンプルと「スタック」のサンプルをそれぞれご紹介します。
キューのサンプルプログラム
import java.util.Deque; import java.util.LinkedList; public class IT0285_QueueSample { public static void main(String[] args) { Deque<String> que = new LinkedList<>(); try { //「最上」の要素を「挿入」 que.addLast("Apple"); que.addLast("Banana"); que.addLast("Coffee"); System.out.println("# ①:"+que); //「最上」の要素を「削除」 System.out.printf("### dequeue:%20s\n",que.removeFirst()); //「最上」の要素を「参照」 System.out.printf("### getFirst:%20s\n",que.getFirst()); //「最上」の要素を「挿入」 que.addLast("Donuts"); System.out.println("# ②:"+que); //「最上」の要素を「削除」 System.out.printf("### dequeue:%20s\n",que.removeFirst()); System.out.printf("### dequeue:%20s\n",que.removeFirst()); System.out.printf("### dequeue:%20s\n",que.removeFirst()); System.out.println("# ③:"+que); //「最上」の要素を「削除」 //→要素が1つもないため、例外が発生 System.out.printf("### dequeue:%20s\n",que.removeFirst()); } catch (Exception e) { System.out.println(e); } } }
(図141)実行結果
スタックのサンプルプログラム
import java.util.ArrayDeque; import java.util.Deque; public class IT0285_StackSample { public static void main(String[] args) { Deque stk = new ArrayDeque<>(); try { //「最上」の要素を「挿入」 stk.push("Apple"); stk.push("Banana"); stk.push("Coffee"); System.out.println("# ①:"+stk); //「最上」の要素を「削除」 System.out.printf("### pop:%21s\n",stk.pop()); //「最上」の要素を「参照」 System.out.printf("### peek:%20s\n",stk.peek()); //「最上」の要素を「挿入」 stk.push("Donuts"); System.out.println("# ②:"+stk); //「最上」の要素を「削除」 System.out.printf("### pop:%21s\n",stk.pop()); System.out.printf("### pop:%21s\n",stk.pop()); System.out.printf("### pop:%21s\n",stk.pop()); System.out.println("# ③:"+stk); //「最上」の要素を「削除」 //→要素が1つもないため、例外が発生 System.out.printf("### pop:%21s\n",stk.pop()); } catch (Exception e) { System.out.println(e); } } }
(図142)実行結果