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

Java ArrayDeque

Java ArrayDeque

このチュートリアルでは、例を使用して ArrayDeque クラスとそのメソッドについて学習します。また、配列 deque を使用してスタックを実装する方法も学びます。

Java では、 ArrayDeque を使用できます 配列を使用してキューおよびデキュー データ構造を実装するためのクラス。


ArrayDeque によって実装されるインターフェース

ArrayDeque クラスは次の 2 つのインターフェイスを実装します:


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() 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() 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]

注: 配列両端キューがいっぱいの場合


ArrayDeque 要素へのアクセス

<強い>1. getFirst() と getLast() を使用して要素にアクセスする

注: 配列両端キューが空の場合、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() メソッドを使用して要素にアクセス

たとえば、

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()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()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 の繰り返し

これらのメソッドを使用するには、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 スタックの実装に使用できる次のメソッドを提供します。

たとえば、

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 を実装します インターフェース。ただし、両者にはいくつかの違いがあります。


Java

  1. Java オペレーター
  2. Java コメント
  3. Java if...else ステートメント
  4. Java for-each ループ
  5. Java 文字列
  6. Java インターフェイス
  7. Java匿名クラス
  8. Java try-with-resources
  9. Java アノテーション
  10. Java アサーション
  11. Java ベクトル