Java ArrayDeque
Java ArrayDeque
In deze zelfstudie leren we over de klasse ArrayDeque en zijn methoden aan de hand van voorbeelden. We zullen ook leren om array deque te gebruiken om een stapel te implementeren.
In Java kunnen we de ArrayDeque
. gebruiken class om wachtrij- en deque-gegevensstructuren te implementeren met behulp van arrays.
Interfaces geïmplementeerd door ArrayDeque
De ArrayDeque
class implementeert deze twee interfaces:
- Java wachtrij-interface
- Java Deque-interface
ArrayDeque maken
Om een array deque te maken, moeten we de java.util.ArrayDeque
. importeren pakket.
Hier is hoe we een array deque in Java kunnen maken:
ArrayDeque<Type> animal = new ArrayDeque<>();
Hier, Type geeft het type array deque aan. Bijvoorbeeld,
// Creating String type ArrayDeque
ArrayDeque<String> animals = new ArrayDeque<>();
// Creating Integer type ArrayDeque
ArrayDeque<Integer> age = new ArrayDeque<>();
Methoden van ArrayDeque
De ArrayDeque
class biedt implementaties voor alle methoden die aanwezig zijn in Queue
en Deque
interface.
Elementen invoegen in deque
add()
- voegt het opgegeven element toe aan het einde van de array dequeaddFirst()
- voegt het gespecificeerde element in aan het begin van de array dequeaddLast()
- voegt de gespecificeerde in aan het einde van de array deque (gelijk aanadd()
)
Opmerking: Als de array deque vol is, zijn al deze methoden add()
, addFirst()
en addLast()
gooit IllegalStateException
.
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Cat, Dog, Horse]
offer()
- voegt het opgegeven element toe aan het einde van de array dequeofferFirst()
- voegt het gespecificeerde element in aan het begin van de array dequeofferLast()
- voegt het opgegeven element toe aan het einde van de array deque
Opmerking: offer()
, offerFirst()
en offerLast()
retourneert true
als het element succesvol is ingevoegd; als de array deque vol is, retourneren deze methoden false
.
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Cat, Dog, Horse]
Opmerking: Als het array deque vol is
- de
add()
methode zal een uitzondering genereren - de
offer()
methode retourneertfalse
Toegang tot ArrayDeque-elementen
getFirst()
- geeft het eerste element van de array deque teruggetLast()
- geeft het laatste element van de array deque terug
Opmerking: Als de array deque leeg is, getFirst()
en getLast()
gooit NoSuchElementException
.
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Dog, Cat, Horse] First Element: Dog Last Element: Horse
peek()
- geeft het eerste element van de array deque terugpeekFirst()
- geeft het eerste element van de array deque terug (gelijk aanpeek()
)peekLast()
- geeft het laatste element van de array deque terug
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Dog, Cat, Horse] Head Element: Dog First Element: Dog Last Element: Horse
Opmerking: Als de array deque leeg is, peek()
, peekFirst()
en getLast()
gooit NoSuchElementException
.
ArrayDeque-elementen verwijderen
remove()
- retourneert en verwijdert een element uit het eerste element van de array dequeremove(element)
- retourneert en verwijdert het opgegeven element uit de kop van de array dequeremoveFirst()
- retourneert en verwijdert het eerste element uit de array deque (gelijk aanremove()
)removeLast()
- retourneert en verwijdert het laatste element uit de array deque
Opmerking: Als de array deque leeg is, remove()
, removeFirst()
en removeLast()
methode genereert een uitzondering. Ook remove(element)
genereert een uitzondering als het element niet wordt gevonden.
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
poll()
- retourneert en verwijdert het eerste element van de array dequepollFirst()
- retourneert en verwijdert het eerste element van de array deque (gelijk aanpoll()
)pollLast()
- retourneert en verwijdert het laatste element van de array deque
Opmerking: Als de array deque leeg is, poll()
, pollFirst()
en pollLast()
retourneert null
als het element niet wordt gevonden.
Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
Om alle elementen uit de array deque te verwijderen, gebruiken we de clear()
methode. Bijvoorbeeld,
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);
}
}
Uitvoer
ArrayDeque: [Dog, Cat, Horse] New ArrayDeque: []
De ArrayDeque herhalen
iterator()
- geeft een iterator terug die kan worden gebruikt om over het array deque te itererendescendingIterator()
- geeft een iterator terug die kan worden gebruikt om de array deque in omgekeerde volgorde te herhalen
Om deze methoden te gebruiken, moeten we de java.util.Iterator
. importeren pakket. Bijvoorbeeld,
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(", ");
}
}
}
Uitvoer
ArrayDeque: [Dog, Cat, Horse] ArrayDeque in reverse order: [Horse, Cat, Dog]
Andere methoden
Methoden | Beschrijvingen |
---|---|
element() | Retourneert een element van de kop van de array deque. |
contains(element) | Zoekt in de array deque naar het opgegeven element. Als het element wordt gevonden, retourneert het true , zo niet, dan retourneert het false . |
size() | Retourneert de lengte van de array deque. |
toArray() | Converteert array deque naar array en geeft het terug. |
clone() | Maakt een kopie van de array deque en geeft deze terug. |
ArrayDeque als een stapel
Een LIFO (Last-In-First-Out) . implementeren stacks in Java, wordt het aanbevolen om een deque te gebruiken over de Stack-klasse. De ArrayDeque
klasse is waarschijnlijk sneller dan de Stack
klasse.
ArrayDeque
biedt de volgende methoden die kunnen worden gebruikt voor het implementeren van een stapel.
push()
- voegt een element toe aan de bovenkant van de stapelpeek()
- retourneert een element van de bovenkant van de stapelpop()
- retourneert en verwijdert een element van de bovenkant van de stapel
Bijvoorbeeld,
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);
}
}
Uitvoer
Stack: [Horse, Cat, Dog] Accessed Element: Horse Removed Element: Horse
ArrayDeque Vs. LinkedList-klasse
Beide ArrayDeque
en Java LinkedList implementeert de Deque
koppel. Er bestaan echter enkele verschillen tussen hen.
LinkedList
ondersteuntnull
elementen, terwijlArrayDeque
niet.- Elk knooppunt in een gekoppelde lijst bevat links naar andere knooppunten. Daarom
LinkedList
vereist meer opslagruimte danArrayDeque
. - Als u de wachtrij of de deque-gegevensstructuur implementeert, een
ArrayDeque
is waarschijnlijk sneller dan eenLinkedList
.
Java