ArrayDeque Java
Java ArrayDeque
Dans ce tutoriel, nous allons découvrir la classe ArrayDeque et ses méthodes à l'aide d'exemples. De plus, nous apprendrons à utiliser array deque pour implémenter une pile.
En Java, on peut utiliser le ArrayDeque classe pour implémenter les structures de données de file d'attente et de deque à l'aide de tableaux.
Interfaces implémentées par ArrayDeque
Le ArrayDeque class implémente ces deux interfaces :
- Interface de file d'attente Java
- Interface Java Deque

Création de ArrayDeque
Afin de créer un tableau deque, nous devons importer le java.util.ArrayDeque paquet.
Voici comment créer un tableau deque en Java :
ArrayDeque<Type> animal = new ArrayDeque<>();
Ici, Tapez indique le type du tableau deque. Par exemple,
// Creating String type ArrayDeque
ArrayDeque<String> animals = new ArrayDeque<>();
// Creating Integer type ArrayDeque
ArrayDeque<Integer> age = new ArrayDeque<>();
Méthodes de ArrayDeque
Le ArrayDeque la classe fournit des implémentations pour toutes les méthodes présentes dans Queue et Deque interface.
Insérer des éléments à Deque
add()- insère l'élément spécifié à la fin du tableau dequeaddFirst()- insère l'élément spécifié au début du tableau dequeaddLast()- insère le spécifié à la fin du tableau deque (équivalent àadd())
Remarque : Si le tableau deque est plein, toutes ces méthodes add() , addFirst() et addLast() lance IllegalStateException .
Par exemple,
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);
}
}
Sortie
ArrayDeque: [Cat, Dog, Horse]
offer()- insère l'élément spécifié à la fin du tableau dequeofferFirst()- insère l'élément spécifié au début du tableau dequeofferLast()- insère l'élément spécifié à la fin du tableau deque
Remarque : offer() , offerFirst() et offerLast() renvoie true si l'élément est inséré avec succès ; si le tableau deque est plein, ces méthodes renvoient false .
Par exemple,
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);
}
}
Sortie
ArrayDeque: [Cat, Dog, Horse]
Remarque : Si le tableau deque est plein
- le
add()méthode lèvera une exception - le
offer()la méthode renvoiefalse
Accéder aux éléments ArrayDeque
getFirst()- renvoie le premier élément du tableau dequegetLast()- renvoie le dernier élément du tableau deque
Remarque : Si le tableau deque est vide, getFirst() et getLast() lance NoSuchElementException .
Par exemple,
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);
}
}
Sortie
ArrayDeque: [Dog, Cat, Horse] First Element: Dog Last Element: Horse
peek()- renvoie le premier élément du tableau dequepeekFirst()- renvoie le premier élément du tableau deque (équivalent àpeek())peekLast()- renvoie le dernier élément du tableau deque
Par exemple,
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);
}
}
Sortie
ArrayDeque: [Dog, Cat, Horse] Head Element: Dog First Element: Dog Last Element: Horse
Remarque : Si le tableau deque est vide, peek() , peekFirst() et getLast() jette NoSuchElementException .
Supprimer les éléments ArrayDeque
remove()- renvoie et supprime un élément du premier élément du tableau dequeremove(element)- renvoie et supprime l'élément spécifié de la tête du tableau dequeremoveFirst()- renvoie et supprime le premier élément du tableau deque (équivalent àremove())removeLast()- renvoie et supprime le dernier élément du tableau deque
Remarque : Si le tableau deque est vide, remove() , removeFirst() et removeLast() méthode lève une exception. Aussi, remove(element) lève une exception si l'élément n'est pas trouvé.
Par exemple,
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);
}
}
Sortie
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
poll()- renvoie et supprime le premier élément du tableau dequepollFirst()- renvoie et supprime le premier élément du tableau deque (équivalent àpoll())pollLast()- renvoie et supprime le dernier élément du tableau deque
Remarque : Si le tableau deque est vide, poll() , pollFirst() et pollLast() renvoie null si l'élément n'est pas trouvé.
Par exemple,
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);
}
}
Sortie
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
Pour supprimer tous les éléments du tableau deque, on utilise le clear() méthode. Par exemple,
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);
}
}
Sortie
ArrayDeque: [Dog, Cat, Horse] New ArrayDeque: []
Itérer le ArrayDeque
iterator()- renvoie un itérateur qui peut être utilisé pour parcourir le tableau dequedescendingIterator()- renvoie un itérateur qui peut être utilisé pour parcourir le tableau deque dans l'ordre inverse
Pour utiliser ces méthodes, nous devons importer le java.util.Iterator forfait. Par exemple,
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(", ");
}
}
}
Sortie
ArrayDeque: [Dog, Cat, Horse] ArrayDeque in reverse order: [Horse, Cat, Dog]
Autres méthodes
| Méthodes | Descriptions |
|---|---|
element() | Renvoie un élément de la tête du tableau deque. |
contains(element) | Recherche dans le tableau deque l'élément spécifié. Si l'élément est trouvé, il renvoie true , sinon il renvoie false . |
size() | Renvoie la longueur du tableau deque. |
toArray() | Convertit le tableau deque en tableau et le renvoie. |
clone() | Crée une copie du tableau deque et la renvoie. |
ArrayDeque en tant que pile
Pour implémenter un LIFO (Last-In-First-Out) piles en Java, il est recommandé d'utiliser un deque sur la classe Stack. Le ArrayDeque classe est susceptible d'être plus rapide que le Stack classe.
ArrayDeque fournit les méthodes suivantes qui peuvent être utilisées pour implémenter une pile.
push()- ajoute un élément en haut de la pilepeek()- renvoie un élément du haut de la pilepop()- renvoie et supprime un élément du haut de la pile
Par exemple,
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);
}
}
Sortie
Stack: [Horse, Cat, Dog] Accessed Element: Horse Removed Element: Horse
ArrayDeque Vs. Classe LinkedList
Les deux ArrayDeque et Java LinkedList implémente le Deque interface. Cependant, il existe quelques différences entre eux.
LinkedListprend en chargenulléléments, alors queArrayDequepas.- Chaque nœud d'une liste chaînée inclut des liens vers d'autres nœuds. C'est pourquoi
LinkedListnécessite plus de stockage queArrayDeque. - Si vous implémentez la file d'attente ou la structure de données deque, un
ArrayDequeest probablement plus rapide qu'unLinkedList.
Java