English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Grund教程

Java Flusskontrolle

Java Array

Java objektorientiert(I)

Java objektorientiert(II)

Java objektorientiert(III)

Java Ausnahmebehandlung

Java 列表(List)

Java Queue(队列)

Java Queue(Kqueue)

Java Map-Kollektion

Java Set-Kollektion/Java Eingabe-Ausgabe(I

O Stream/Java Reader

Writer

Java ArrayDeque

Neue Eigenschaften

In diesem Tutorial werden wir mit Beispielen lernen, wie die Klasse ArrayDeque und ihre Methoden funktionieren. Außerdem werden wir lernen, wie man mit ArrayDeque Stacks realisiert.

In Java können wir die Klasse ArrayDeque verwenden, um mit Arrays die Datenstrukturen Queue und Deque zu realisieren.

Von ArrayDeque implementierte Interfaces

Java Queue-Interface

Erstellen Sie ArrayDeque

Um eine ArrayDeque-Doppelend-Kqueue zu erstellen, müssen wir das Paket java.util.ArrayDeque importieren.

Dies sind die Methoden, mit denen wir in Java ArrayDeque-Doppelend-Kqueues erstellen können:

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

//Hier stellt Type die Typen der ArrayDeque-Doppelend-Kqueue dar. Zum Beispiel,
Erstellen Sie eine ArrayDeque für String-Typen
//ArrayDeque<String> animals = new ArrayDeque<>();
Erstellen Sie eine ArrayDeque für Integer-Typen

ArrayDeque<Integer> age = new ArrayDeque<>();

ArrayDeque-Methode

Die ArrayDeque-Klasse bietet alle Methoden, die in den Methoden Queue und Deque-Interface existieren.

1Fügen Sie den Element in die Doppelend-Kqueue ein

  • .Verwenden Sie add(), addFirst() und addLast(), um Elemente hinzuzufügen - Fügen Sie das angegebene Element am Ende der ArrayDeque-Doppelende-Kette hinzu

  • add() -addFirst()

  • Fügen Sie am Anfang der ArrayDeque-Doppelend-K队列 den angegebenen Element ein - addLast()

Hinweis:Fügen Sie den angegebenen Inhalt am Ende der ArrayDeque-Doppelend-K队列 ein (equivalent zu add())

Beispielsweise,

import java.util.ArrayDeque;
class Main {
    public static void main(String[] args) {
        ArrayDeque<String> animals = new ArrayDeque<>();
        //Wenn die ArrayDeque-Doppelend-K队列已voll, dann lösen alle diese Methoden add(), addFirst() und addLast() IllegalStateException aus.
        animals.add("Dog");
        //Verwenden Sie add ()
        Verwenden Sie addFirst ()
        //Verwenden Sie addLast()
        animals.addLast("Horse");
        System.out.println("ArrayDeque: "); + animals);
    }
}

Ausgabenergebnis

ArrayDeque: [Katze, Hund, Pferd]

2.Verwenden Sie offer(), offerFirst() und offerLast(), um Elemente einzufügen

  • offer() - Fügen Sie das angegebene Element am Ende der ArrayDeque-Doppelende-Kette hinzu

  • offerFirst() - Fügen Sie das angegebene Element am Anfang der ArrayDeque-Doppelende-Kette hinzu

  • offerLast() - Fügen Sie das angegebene Element am Ende der ArrayDeque-Doppelende-Kette hinzu

Hinweis: offer(), offerFirst() und offerLast() geben true zurück, ob der Element erfolgreich eingefügt wurde;否则,返回空。Wenn die ArrayDeque-Doppelende-Kette voll ist, geben diese Methoden false zurück。

Beispielsweise,

import java.util.ArrayDeque;
class Main {
    public static void main(String[] args) {
        ArrayDeque<String> animals = new ArrayDeque<>();
        //Verwenden Sie offer()
        animals.offer("Hund");
        //Verwenden Sie offerFirst()
        animals.offerFirst("Katze");
        //Verwenden Sie offerLast()
        animals.offerLast("Pferd");
        System.out.println("ArrayDeque: "); + animals);
    }
}

Ausgabenergebnis

ArrayDeque: [Katze, Hund, Pferd]

Rufen Sie Elemente der ArrayDeque ab

1.Verwenden Sie getFirst() und getLast(), um Elemente abzurufen

  • getFirst() - Gibt den ersten Element der ArrayDeque-Doppelende-Kette zurück

  • getLast() - Gibt den letzten Element der ArrayDeque-Doppelende-Kette zurück

Anmerkung:Wenn die ArrayDeque-Doppelende-Kette leer ist, wirft getFirst() und getLast() NoSuchElementException.

Beispielsweise,

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);
        // Erhalte das erste Element
        String firstElement = animals.getFirst();
        System.out.println("Erster Element: " + "") + firstElement);
        //Erhalte das letzte Element
        String lastElement = animals.getLast();
        System.out.println("Letzter Element: " + "") + lastElement);
    }
}

Ausgabenergebnis

ArrayDeque: [Hund, Katze, Pferd]
Erstes Element: Dog
Letztes Element: Horse

2.Verwenden Sie peek(), peekFirst() und peekLast(), um Elemente abzurufen

  • peek() - Gibt den ersten Element der ArrayDeque-Doppelende-Kette zurück

  • peekFirst() - Gibt den ersten Element der ArrayDeque-Doppelende-Kette zurück (äquivalent zu peek())

  • peekLast() - Gibt den letzten Element der ArrayDeque-Doppelende-Kette zurück

Beispielsweise,

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);
        //Verwenden Sie peek()
        String element = animals.peek();
        System.out.println("Kopf-Element: " + "") + element);
        //Verwenden Sie peekFirst()
        String firstElement = animals.peekFirst();
        System.out.println("Erster Element: " + "") + firstElement);
        //Verwenden Sie peekLast
        String lastElement = animals.peekLast();
        System.out.println("Letzter Element: " + "") + lastElement);
    }
}

Ausgabenergebnis

ArrayDeque: [Hund, Katze, Pferd]
Kopf-Element: Dog
Erstes Element: Dog
Letztes Element: Horse

Hinweis:Wenn die ArrayDeque-Doppelendkette leer ist, werfen peek(), peekFirst() und getLast() NoSuchElementException aus.

Löschen Sie ArrayDeque-Elemente

1.Verwenden Sie die Methoden remove(), removeFirst(), removeLast(), um Elemente zu löschen

  • remove() - Geben Sie und löschen Sie ein Element vom ersten Element der ArrayDeque-Doppelendkette zurück

  • remove(element) - Geben Sie und löschen Sie das spezifizierte Element vom Kopf der ArrayDeque-Doppelendkette zurück

  • removeFirst() - Geben Sie und löschen Sie den ersten Element der ArrayDeque-Doppelendkette zurück (äquivalent zu remove())

  • removeLast() - Geben Sie und löschen Sie den letzten Element der ArrayDeque-Doppelendkette zurück

Hinweis:Wenn die ArrayDeque-Doppelendkette leer ist, werden die Methoden remove(), removeFirst() und removeLast() eine Ausnahme ausgelöst. Außerdem wird eine Ausnahme ausgelöst, wenn das Element nicht gefunden wird, remove(element).

Beispielsweise,

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);
        //Verwenden Sie remove()
        String element = animals.remove();
        System.out.println("Löschen Sie Element: ") + element);
        System.out.println("Neue ArrayDeque: "); + animals);
        //Verwenden Sie removeFirst()
        String firstElement = animals.removeFirst();
        System.out.println("Löschen des ersten Elements: "); + firstElement);
        //Verwenden Sie removeLast()
        String lastElement = animals.removeLast();
        System.out.println("Löschen des letzten Elements: "); + lastElement);
    }
}

Ausgabenergebnis

ArrayDeque: [Dog, Cat, Cow, Horse]
Löschen des Elements: Dog
Neue ArrayDeque: [Cat, Cow, Horse]
Löschen des ersten Elements: Cat
Löschen des letzten Elements: Horse

2.Verwenden Sie die Methoden poll(), pollFirst() und pollLast(), um Elemente zu löschen

  • poll() - Geben Sie und löschen Sie das erste Element der ArrayDeque-Doppelendkette zurück

  • pollFirst() - Geben Sie und löschen Sie den ersten Element der ArrayDeque-Doppelendkette zurück (äquivalent zu poll())

  • pollLast() - Geben Sie und löschen Sie den letzten Element der ArrayDeque-Doppelendkette zurück

Hinweis:Wenn die ArrayDeque-Doppelendkette leer ist, geben poll(), pollFirst() und pollLast() null zurück, wenn das Element nicht gefunden wird.

Beispielsweise,

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);
        //Verwenden Sie poll()
        String element = animals.poll();
        System.out.println("Löschen Sie Element: ") + element);
        System.out.println("Neue ArrayDeque: "); + animals);
        //Verwenden Sie pollFirst()
        String firstElement = animals.pollFirst();
        System.out.println("Löschen des ersten Elements: "); + firstElement);
        //Verwenden Sie pollLast()
        String lastElement = animals.pollLast();
        System.out.println("Löschen des letzten Elements: "); + lastElement);
    }
}

Ausgabenergebnis

ArrayDeque: [Dog, Cat, Cow, Horse]
Löschen des Elements: Dog
Neue ArrayDeque: [Cat, Cow, Horse]
Löschen des ersten Elements: Cat
Löschen des letzten Elements: Horse

3.Element löschen: Verwenden Sie die Methode clear()

Um alle Elemente aus der ArrayDeque-Doppelendekette zu löschen, verwenden wir die Methode clear(). Zum Beispiel,

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);
        //Verwenden Sie clear()
        animals.clear();
        System.out.println("Neue ArrayDeque: "); + animals);
    }
}

Ausgabenergebnis

ArrayDeque: [Hund, Katze, Pferd]
Neue ArrayDeque: []

Durchlaufen Sie die ArrayDeque iterativ

  • iterator() - Gibt einen Iterator zurück, der verwendet werden kann, um die ArrayDeque-Doppelendekette zu durchlaufen

  • descendingIterator() -Gibt einen Iterator zurück, der verwendet werden kann, um die ArrayDeque-Doppelendekette in umgekehrter Reihenfolge zu durchlaufen

Um diese Methoden zu verwenden, müssen wir das Paket java.util.Iterator importieren. Zum Beispiel,

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: ");
        //Verwenden Sie den Iterator
        Iterator<String> iterate = animals.iterator();
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
        System.out.print("\nUmgekehrte ArrayDeque: ");
        //Verwenden Sie descendingIterator()}
        Iterator<String> desIterate = animals.descendingIterator();
        while(desIterate.hasNext()) {
            System.out.print(desIterate.next());
            System.out.print(", ");
        }
    }
}

Ausgabenergebnis

ArrayDeque: [Hund, Katze, Pferd]
Umgekehrte ArrayDeque: [Pferd, Katze, Hund]

Andere Methoden

MethodeInhaltsbeschreibung
element()Geben Sie ein Element von der Kopfseite der ArrayDeque doppelseitigen Warteschlange zurück.
contains(element)Suchen Sie das angegebene Element in der ArrayDeque doppelseitigen Warteschlange.
Gibt true zurück, wenn das Element gefunden wird, sonst false.
size()Geben Sie die Länge der ArrayDeque doppelseitigen Warteschlange zurück.
toArray()Konvertieren Sie die ArrayDeque doppelseitige Warteschlange in ein Array und geben Sie sie zurück.
clone()Erstellen Sie eine Kopie der ArrayDeque doppelseitigen Warteschlange und geben Sie sie zurück.

ArrayDeque als Stapel

Um in Java zu implementierenLIFO (Last In, First Out)Stapel, es wird empfohlen, inStack-KlasseVerwenden Sie die doppelseitige Warteschlange. Die ArrayDeque ist schneller als die Stack-Klasse.

ArrayDeque bietet folgende Methoden an, die zur Implementierung von Stapeln verwendet werden können.

  • push() - Fügen Sie ein Element auf die Oberseite des Stapels hinzu

  • peek() - Geben Sie ein Element von der Oberseite des Stapels zurück

  • pop() - Geben Sie das Element zurück und löschen Sie es von der Oberseite des Stapels

Beispielsweise,

import java.util.ArrayDeque;
class Main {
    public static void main(String[] args) {
        ArrayDeque<String> stack = new ArrayDeque<>();
        //Fügen Sie das Element dem stack hinzu
        stack.push("Hund");
        stack.push("Katze");
        stack.push("Pferd");
        System.out.println("Stack: ", + stack);
        //Zugriff auf das Element von der Oberseite des Stapels
        String element = stack.peek();
        System.out.println("Zugriff auf Element: ", + element);
        //Element vom Stapeltopf löschen
        String remElement = stack.pop();
        System.out.println("Element löschen: ", + remElement);
    }
}

Ausgabenergebnis

Stack: [Horse, Cat, Dog]
Element zugreifen: Horse
Element löschen: Horse

ArrayDeque und LinkedList-Klasse

ArrayDeque undJava LinkedListImplementiert den Deque-Interface. Es gibt jedoch einige Unterschiede zwischen ihnen.

  • LinkedList unterstützt leere Elemente, während ArrayDeque dies nicht tut.

  • Jeder Knoten der Liste enthält Verweise auf andere Knoten. Dies ist der Grund, warum LinkedList mehr Speicherplatz benötigt als ArrayDeque.

  • Wenn eine Warteschlange oder eine doppelte Warteschlange als Datenstruktur implementiert werden soll, könnte ArrayDeque schneller als LinkedList sein.