Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java ArrayDeque meistern: Umfassender Leitfaden & Stack-Implementierung

Java ArrayDeque

Dieser Leitfaden erklärt die ArrayDeque-Klasse, ihre Methoden und praktische Beispiele – einschließlich der Nutzung als Stack.

In Java implementiert ArrayDeque Queue- und Deque-Datenstrukturen, die von einem größenveränderbaren Array unterstützt werden.


Von ArrayDeque implementierte Interfaces

Die ArrayDeque-Klasse implementiert folgende Interfaces:

Java ArrayDeque meistern: Umfassender Leitfaden & Stack-Implementierung


ArrayDeque erstellen

Zuerst das Paket importieren:

import java.util.ArrayDeque;

Typisierten Deque instanziieren:

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

Beispiele:

// String-Deque ArrayDeque<String> animals = new ArrayDeque<>(); // Integer-Deque ArrayDeque<Integer> ages = new ArrayDeque<>();

Wichtige ArrayDeque-Methoden

Elemente einfügen

1. Mit add(), addFirst(), addLast()

Hinweis: Falls Deque voll, werfen diese Methoden IllegalStateException.

ArrayDeque<String> animals = new ArrayDeque<>(); animals.add("Dog"); animals.addFirst("Cat"); animals.addLast("Horse"); System.out.println("ArrayDeque: " + animals);

Ausgabe

ArrayDeque: [Cat, Dog, Horse]

2. Mit offer(), offerFirst(), offerLast()

Hinweis: Diese Methoden geben false zurück, falls Deque voll.

ArrayDeque<String> animals = new ArrayDeque<>(); animals.offer("Dog"); animals.offerFirst("Cat"); animals.offerLast("Horse"); System.out.println("ArrayDeque: " + animals);

Ausgabe

ArrayDeque: [Cat, Dog, Horse]

Auf Elemente zugreifen

1. getFirst() und getLast()

Hinweis: Wirft NoSuchElementException, falls Deque leer.

ArrayDeque<String> animals = new ArrayDeque<>(); animals.add("Dog"); animals.add("Cat"); animals.add("Horse"); System.out.println("ArrayDeque: " + animals); System.out.println("First Element: " + animals.getFirst()); System.out.println("Last Element: " + animals.getLast());

Ausgabe

ArrayDeque: [Dog, Cat, Horse] First Element: Dog Last Element: 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("Head Element: " + animals.peek()); System.out.println("First Element: " + animals.peekFirst()); System.out.println("Last Element: " + animals.peekLast());

Ausgabe

ArrayDeque: [Dog, Cat, Horse] Head Element: Dog First Element: Dog Last Element: Horse

Hinweis: Falls Deque leer, geben peek() und Freunde null zurück statt Exception zu werfen.

Elemente entfernen

1. remove(), removeFirst(), removeLast()

Hinweis: Wirft NoSuchElementException, falls Deque leer oder remove(o) o nicht findet.

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("Removed Element: " + animals.remove()); System.out.println("New ArrayDeque: " + animals); System.out.println("Removed First Element: " + animals.removeFirst()); System.out.println("Removed Last Element: " + animals.removeLast());

Ausgabe

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

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("Removed Element: " + animals.poll()); System.out.println("New ArrayDeque: " + animals); System.out.println("Removed First Element: " + animals.pollFirst()); System.out.println("Removed Last Element: " + animals.pollLast());

Ausgabe

ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse

3. clear()

Leert den gesamten Deque.

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

Ausgabe

ArrayDeque: [Dog, Cat, Horse] New ArrayDeque: []

Über einen ArrayDeque iterieren

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 in reverse order: "); Iterator<String> rev = animals.descendingIterator(); while(rev.hasNext()) { System.out.print(rev.next() + ", "); }

Ausgabe

ArrayDeque: [Dog, Cat, Horse] ArrayDeque in reverse order: [Horse, Cat, Dog]

Weitere gängige Methoden

Methode Beschreibung
element() Ruft ab aber entfernt nicht das vordere Element.
contains(Object o) Prüft Anwesenheit von o; gibt true falls gefunden.
size() Anzahl Elemente im Deque.
toArray() Konvertiert Deque in Array.
clone() Erstellt flache Kopie des Deque.

ArrayDeque als Stack verwenden

Für LIFO-Verhalten ist ArrayDeque gegenüber Stack vorzuziehen aufgrund besserer Performance und ohne Legacy-Synchronisations-Overhead.

Stack-ähnliche Methoden:

ArrayDeque<String> stack = new ArrayDeque<>(); stack.push("Dog"); stack.push("Cat"); stack.push("Horse"); System.out.println("Stack: " + stack); System.out.println("Accessed Element: " + stack.peek()); System.out.println("Removed Element: " + stack.pop());

Ausgabe

Stack: [Horse, Cat, Dog] Accessed Element: Horse Removed Element: Horse

ArrayDeque vs LinkedList

Beide implementieren Deque, unterscheiden sich aber:


Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList