工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java ArrayDeque完全ガイド:主要メソッドとスタック実装

Java ArrayDeque

ArrayDequeクラス、そのメソッド、実践的な例(スタックとしての使用法を含む)を解説します。

Javaにおいて、ArrayDequeはサイズ可変配列をバックエンドとするキューとデックのデータ構造を実装します。


ArrayDequeが実装するインターフェース

ArrayDequeクラスは以下のインターフェースを実装します:

Java ArrayDeque完全ガイド:主要メソッドとスタック実装


ArrayDequeの作成

まずパッケージをインポートします:

import java.util.ArrayDeque;

型付きデックをインスタンス化します:

ArrayDeque<Type> deque = new ArrayDeque<>();

例:

// String型のデック
ArrayDeque<String> animals = new ArrayDeque<>();
// Integer型のデック
ArrayDeque<Integer> ages = new ArrayDeque<>();

ArrayDequeの主要メソッド

要素の挿入

1. add()、addFirst()、addLast()の使用

注意:デックが満杯の場合、これらのメソッドはIllegalStateExceptionをスローします。
ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.addFirst("Cat");
animals.addLast("Horse");
System.out.println("ArrayDeque: " + animals);

出力

ArrayDeque: [Cat, Dog, Horse]

2. offer()、offerFirst()、offerLast()の使用

注意:これらのメソッドはデックが満杯の場合falseを返します。
ArrayDeque<String> animals = new ArrayDeque<>();
animals.offer("Dog");
animals.offerFirst("Cat");
animals.offerLast("Horse");
System.out.println("ArrayDeque: " + animals);

出力

ArrayDeque: [Cat, Dog, Horse]

要素へのアクセス

1. getFirst()とgetLast()

注意:デックが空の場合NoSuchElementExceptionをスローします。
ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
System.out.println("最初の要素: " + animals.getFirst());
System.out.println("最後の要素: " + animals.getLast());

出力

ArrayDeque: [Dog, Cat, Horse]
最初の要素: Dog
最後の要素: Horse

2. peek()、peekFirst()、peekLast()

ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
System.out.println("ヘッド要素: " + animals.peek());
System.out.println("最初の要素: " + animals.peekFirst());
System.out.println("最後の要素: " + animals.peekLast());

出力

ArrayDeque: [Dog, Cat, Horse]
ヘッド要素: Dog
最初の要素: Dog
最後の要素: Horse
注意:デックが空の場合、peek()系は例外をスローせずnullを返します。

要素の削除

1. remove()、removeFirst()、removeLast()

注意:デックが空、またはremove(o)でoが見つからない場合NoSuchElementExceptionをスローします。
ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
System.out.println("削除された要素: " + animals.remove());
System.out.println("新しいArrayDeque: " + animals);
System.out.println("削除された最初の要素: " + animals.removeFirst());
System.out.println("削除された最後の要素: " + animals.removeLast());

出力

ArrayDeque: [Dog, Cat, Cow, Horse]
削除された要素: Dog
新しいArrayDeque: [Cat, Cow, Horse]
削除された最初の要素: Cat
削除された最後の要素: Horse

2. poll()、pollFirst()、pollLast()

ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
System.out.println("削除された要素: " + animals.poll());
System.out.println("新しいArrayDeque: " + animals);
System.out.println("削除された最初の要素: " + animals.pollFirst());
System.out.println("削除された最後の要素: " + animals.pollLast());

出力

ArrayDeque: [Dog, Cat, Cow, Horse]
削除された要素: Dog
新しいArrayDeque: [Cat, Cow, Horse]
削除された最初の要素: Cat
削除された最後の要素: Horse

3. clear()

デック全体を空にします。

ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
animals.clear();
System.out.println("新しいArrayDeque: " + animals);

出力

ArrayDeque: [Dog, Cat, Horse]
新しいArrayDeque: []

ArrayDequeのイテレーション

ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.print("ArrayDeque: ");
Iterator<String> it = animals.iterator();
while(it.hasNext()) {
    System.out.print(it.next() + ", ");
}
System.out.print("\nArrayDeque(逆順): ");
Iterator<String> rev = animals.descendingIterator();
while(rev.hasNext()) {
    System.out.print(rev.next() + ", ");
}

出力

ArrayDeque: [Dog, Cat, Horse]
ArrayDeque(逆順): [Horse, Cat, Dog]

その他の一般的なメソッド

メソッド説明
element()削除せずにヘッドを取得
contains(Object o)oの存在確認。見つかればtrue
size()デックの要素数
toArray()デックを配列に変換
clone()デックのシャローコピーを作成

ArrayDequeをスタックとして使用

LIFO動作には、StackよりArrayDequeが適しています。パフォーマンスが良く、レガシーな同期オーバーヘッドがないためです。

スタック風メソッド:

ArrayDeque<String> stack = new ArrayDeque<>();
stack.push("Dog");
stack.push("Cat");
stack.push("Horse");
System.out.println("Stack: " + stack);
System.out.println("アクセスされた要素: " + stack.peek());
System.out.println("削除された要素: " + stack.pop());

出力

Stack: [Horse, Cat, Dog]
アクセスされた要素: Horse
削除された要素: Horse

ArrayDeque vs LinkedList

両方ともDequeを実装しますが、違いがあります:

Java

  1. Java演算子をマスター:種類、構文、実践例
  2. Javaコメント:種類、使い方、ベストプラクティス
  3. Java if…elseをマスター:制御フローを徹底解説
  4. Java拡張forループをマスター:構文、例、ベストプラクティス
  5. Java文字列をマスター:生成、メソッド、ベストプラクティス
  6. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  7. Java無名インナークラス完全ガイド:定義、構文、実践例
  8. Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
  9. Javaアノテーション完全ガイド:種類、配置場所、実践例
  10. Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
  11. Java Vectorの理解:使い方、特徴、ArrayListとの比較