Java ArrayDeque
Java ArrayDeque
このチュートリアルでは、例を使用して ArrayDeque クラスとそのメソッドについて学習します。また、配列 deque を使用してスタックを実装する方法も学びます。
Java では、 ArrayDeque
を使用できます 配列を使用してキューおよびデキュー データ構造を実装するためのクラス。
ArrayDeque によって実装されるインターフェース
ArrayDeque
クラスは次の 2 つのインターフェイスを実装します:
- Java キュー インターフェイス
- Java Deque インターフェイス
ArrayDeque の作成
配列両端キューを作成するには、java.util.ArrayDeque
をインポートする必要があります パッケージ。
Java で配列両端キューを作成する方法は次のとおりです。
ArrayDeque<Type> animal = new ArrayDeque<>();
ここで、タイプ 配列両端キューのタイプを示します。たとえば、
// Creating String type ArrayDeque
ArrayDeque<String> animals = new ArrayDeque<>();
// Creating Integer type ArrayDeque
ArrayDeque<Integer> age = new ArrayDeque<>();
ArrayDeque のメソッド
ArrayDeque
クラスは、Queue
に存在するすべてのメソッドの実装を提供します および Deque
デキューする要素を挿入
<強い>1. add()、addFirst()、addLast() を使用して要素を追加します
add()
- 指定された要素を配列両端キューの最後に挿入しますaddFirst()
- 指定された要素を配列両端キューの先頭に挿入しますaddLast()
- 配列 deque の最後に指定されたものを挿入します (add()
に相当) )
注: 配列両端キューがいっぱいの場合、これらすべてのメソッド add()
、 addFirst()
および addLast()
IllegalStateException
をスローします .
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
// Using add()
animals.add("Dog");
// Using addFirst()
animals.addFirst("Cat");
// Using addLast()
animals.addLast("Horse");
System.out.println("ArrayDeque: " + animals);
}
}
出力
ArrayDeque: [Cat, Dog, Horse]
<強い>2. offer()、offerFirst()、および offerLast() を使用して要素を挿入します
offer()
- 指定された要素を配列両端キューの最後に挿入しますofferFirst()
- 指定された要素を配列両端キューの先頭に挿入しますofferLast()
- 指定された要素を配列両端キューの最後に挿入します
注: offer()
、 offerFirst()
そして offerLast()
true
を返します 要素が正常に挿入された場合。配列両端キューがいっぱいの場合、これらのメソッドは false
を返します .
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
// Using offer()
animals.offer("Dog");
// Using offerFirst()
animals.offerFirst("Cat");
// Using offerLast()
animals.offerLast("Horse");
System.out.println("ArrayDeque: " + animals);
}
}
出力
ArrayDeque: [Cat, Dog, Horse]
注: 配列両端キューがいっぱいの場合
add()
メソッドは例外をスローしますoffer()
メソッドはfalse
を返します
ArrayDeque 要素へのアクセス
<強い>1. getFirst() と getLast() を使用して要素にアクセスする
getFirst()
- 配列 deque の最初の要素を返しますgetLast()
- 配列 deque の最後の要素を返します
注: 配列両端キューが空の場合、getFirst()
と getLast()
NoSuchElementException
をスローします .
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Get the first element
String firstElement = animals.getFirst();
System.out.println("First Element: " + firstElement);
// Get the last element
String lastElement = animals.getLast();
System.out.println("Last Element: " + lastElement);
}
}
出力
ArrayDeque: [Dog, Cat, Horse] First Element: Dog Last Element: Horse
<強い>2. peek()、peekFirst()、peekLast() メソッドを使用して要素にアクセス
peek()
- 配列 deque の最初の要素を返しますpeekFirst()
- 配列 deque の最初の要素を返します (peek()
に相当) )peekLast()
- 配列 deque の最後の要素を返します
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using peek()
String element = animals.peek();
System.out.println("Head Element: " + element);
// Using peekFirst()
String firstElement = animals.peekFirst();
System.out.println("First Element: " + firstElement);
// Using peekLast
String lastElement = animals.peekLast();
System.out.println("Last Element: " + lastElement);
}
}
出力
ArrayDeque: [Dog, Cat, Horse] Head Element: Dog First Element: Dog Last Element: Horse
注: 配列両端キューが空の場合、peek()
、 peekFirst()
と getLast()
NoSuchElementException
をスローします .
ArrayDeque 要素を削除
<強い>1. remove()、removeFirst()、removeLast() メソッドを使用して要素を削除します
remove()
- 配列 deque の最初の要素から要素を返し、削除しますremove(element)
- 指定された要素を返し、配列 deque の先頭から削除しますremoveFirst()
- 配列 deque から最初の要素を返し、削除します (remove()
と同等) )removeLast()
- 配列 deque から最後の要素を返し、削除します
注: 配列両端キューが空の場合、remove()
、 removeFirst()
と removeLast()
メソッドは例外をスローします。また、remove(element)
要素が見つからない場合、例外をスローします。
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using remove()
String element = animals.remove();
System.out.println("Removed Element: " + element);
System.out.println("New ArrayDeque: " + animals);
// Using removeFirst()
String firstElement = animals.removeFirst();
System.out.println("Removed First Element: " + firstElement);
// Using removeLast()
String lastElement = animals.removeLast();
System.out.println("Removed Last Element: " + lastElement);
}
}
出力
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
<強い>2. poll()、pollFirst()、pollLast() メソッドを使用して要素を削除します
poll()
- 配列 deque の最初の要素を返し、削除しますpollFirst()
- 配列 deque の最初の要素を返し、削除します (poll()
に相当) )pollLast()
- 配列 deque の最後の要素を返し、削除します
注: 配列両端キューが空の場合、poll()
、 pollFirst()
および pollLast()
null
を返します 要素が見つからない場合。
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using poll()
String element = animals.poll();
System.out.println("Removed Element: " + element);
System.out.println("New ArrayDeque: " + animals);
// Using pollFirst()
String firstElement = animals.pollFirst();
System.out.println("Removed First Element: " + firstElement);
// Using pollLast()
String lastElement = animals.pollLast();
System.out.println("Removed Last Element: " + lastElement);
}
}
出力
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
<強い>3.要素の削除:clear() メソッドを使用
配列両端キューからすべての要素を削除するには、clear()
を使用します 方法。たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using clear()
animals.clear();
System.out.println("New ArrayDeque: " + animals);
}
}
出力
ArrayDeque: [Dog, Cat, Horse] New ArrayDeque: []
ArrayDeque の繰り返し
iterator()
- 配列両端キューの反復処理に使用できる反復子を返しますdescendingIterator()
- 配列 deque を逆順に繰り返すために使用できる反復子を返します
これらのメソッドを使用するには、java.util.Iterator
をインポートする必要があります パッケージ。たとえば、
import java.util.ArrayDeque;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.print("ArrayDeque: ");
// Using iterator()
Iterator<String> iterate = animals.iterator();
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
System.out.print("\nArrayDeque in reverse order: ");
// Using descendingIterator()
Iterator<String> desIterate = animals.descendingIterator();
while(desIterate.hasNext()) {
System.out.print(desIterate.next());
System.out.print(", ");
}
}
}
出力
ArrayDeque: [Dog, Cat, Horse] ArrayDeque in reverse order: [Horse, Cat, Dog]
その他の方法
メソッド | 説明 |
---|---|
element() | 配列両端キューの先頭から要素を返します。 |
contains(element) | 指定された要素の配列両端キューを検索します。 要素が見つかった場合、 true を返します。 、そうでない場合は false を返します . |
size() | 配列両端キューの長さを返します。 |
toArray() | 配列両端キューを配列に変換して返します。 |
clone() | 配列両端キューのコピーを作成し、それを返します。 |
スタックとしての ArrayDeque
LIFO (後入れ先出し) を実装するには Java でスタックを使用する場合、Stack クラスに対して両端キューを使用することをお勧めします。 ArrayDeque
クラスは Stack
よりも高速になる可能性があります クラス。
ArrayDeque
スタックの実装に使用できる次のメソッドを提供します。
push()
- 要素をスタックの一番上に追加しますpeek()
- スタックの一番上から要素を返しますpop()
- スタックの一番上から要素を返し、削除します
たとえば、
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> stack = new ArrayDeque<>();
// Add elements to stack
stack.push("Dog");
stack.push("Cat");
stack.push("Horse");
System.out.println("Stack: " + stack);
// Access element from top of stack
String element = stack.peek();
System.out.println("Accessed Element: " + element);
// Remove elements from top of stack
String remElement = stack.pop();
System.out.println("Removed element: " + remElement);
}
}
出力
Stack: [Horse, Cat, Dog] Accessed Element: Horse Removed Element: Horse
ArrayDeque 対。 LinkedList クラス
両方 ArrayDeque
Java LinkedList は Deque
を実装します インターフェース。ただし、両者にはいくつかの違いがあります。
LinkedList
null
をサポート 要素、一方ArrayDeque
- リンク リストの各ノードには、他のノードへのリンクが含まれています。だから
LinkedList
ArrayDeque
より多くのストレージが必要です . - キューまたはデキュー データ構造を実装している場合は、
ArrayDeque
LinkedList
よりも速い可能性があります .
Java