Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser Java ArrayDeque : Guide Complet et Implémentation de Pile

Java ArrayDeque

Ce guide explique la classe ArrayDeque, ses méthodes et des exemples pratiques – y compris comment l'utiliser comme pile.

En Java, ArrayDeque implémente les structures de données file et deque appuyées par un tableau redimensionnable.


Interfaces Implémentées par ArrayDeque

La classe ArrayDeque implémente les interfaces suivantes :


Création d'un ArrayDeque

Importez d'abord le package :

import java.util.ArrayDeque;

Instanciez un deque typé :

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

Exemples :

// Deque de chaînes
ArrayDeque<String> animals = new ArrayDeque<>();
// Deque d'entiers
ArrayDeque<Integer> ages = new ArrayDeque<>();

Méthodes Clés d'ArrayDeque

Insertion d'Éléments

1. Utilisation de add(), addFirst(), addLast()

Note : Si le deque est plein, ces méthodes lèvent IllegalStateException.

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

Sortie

ArrayDeque: [Cat, Dog, Horse]

2. Utilisation de offer(), offerFirst(), offerLast()

Note : Ces méthodes retournent false si le deque est plein.

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

Sortie

ArrayDeque: [Cat, Dog, Horse]

Accès aux Éléments

1. getFirst() et getLast()

Note : Lève NoSuchElementException si le deque est vide.

ArrayDeque<String> animals = new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
System.out.println("Premier Élément: " + animals.getFirst());
System.out.println("Dernier Élément: " + animals.getLast());

Sortie

ArrayDeque: [Dog, Cat, Horse] Premier Élément: Dog Dernier Élément: 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("Élément Tête: " + animals.peek());
System.out.println("Premier Élément: " + animals.peekFirst());
System.out.println("Dernier Élément: " + animals.peekLast());

Sortie

ArrayDeque: [Dog, Cat, Horse] Élément Tête: Dog Premier Élément: Dog Dernier Élément: Horse

Note : Si le deque est vide, peek() et ses variantes retournent null au lieu de lever une exception.

Suppression d'Éléments

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

Note : Lève NoSuchElementException si le deque est vide ou si remove(o) ne trouve pas o.

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("Élément Supprimé: " + animals.remove());
System.out.println("Nouveau ArrayDeque: " + animals);
System.out.println("Premier Élément Supprimé: " + animals.removeFirst());
System.out.println("Dernier Élément Supprimé: " + animals.removeLast());

Sortie

ArrayDeque: [Dog, Cat, Cow, Horse] Élément Supprimé: Dog Nouveau ArrayDeque: [Cat, Cow, Horse] Premier Élément Supprimé: Cat Dernier Élément Supprimé: 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("Élément Supprimé: " + animals.poll());
System.out.println("Nouveau ArrayDeque: " + animals);
System.out.println("Premier Élément Supprimé: " + animals.pollFirst());
System.out.println("Dernier Élément Supprimé: " + animals.pollLast());

Sortie

ArrayDeque: [Dog, Cat, Cow, Horse] Élément Supprimé: Dog Nouveau ArrayDeque: [Cat, Cow, Horse] Premier Élément Supprimé: Cat Dernier Élément Supprimé: Horse

3. clear()

Vide entièrement le 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("Nouveau ArrayDeque: " + animals);

Sortie

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

Itération sur un ArrayDeque

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 dans l'ordre inverse: ");
Iterator<String> rev = animals.descendingIterator();
while(rev.hasNext()) {
    System.out.print(rev.next() + ", ");
}

Sortie

ArrayDeque: [Dog, Cat, Horse] ArrayDeque dans l'ordre inverse: [Horse, Cat, Dog]

Autres Méthodes Courantes

MéthodeDescription
element()Récupère sans supprimer la tête.
contains(Object o)Vérifie la présence de o ; retourne true si trouvé.
size()Nombre d'éléments dans le deque.
toArray()Convertit le deque en tableau.
clone()Crée une copie superficielle du deque.

Utilisation d'ArrayDeque comme Pile (Stack)

Pour un comportement LIFO, ArrayDeque est préférable à Stack grâce à de meilleures performances et sans surcharge de synchronisation legacy.

Méthodes style pile :

ArrayDeque<String> stack = new ArrayDeque<>();
stack.push("Dog");
stack.push("Cat");
stack.push("Horse");
System.out.println("Stack: " + stack);
System.out.println("Élément Accédé: " + stack.peek());
System.out.println("Élément Supprimé: " + stack.pop());

Sortie

Stack: [Horse, Cat, Dog] Élément Accédé: Horse Élément Supprimé: Horse

ArrayDeque vs LinkedList

Les deux implémentent Deque, mais diffèrent :

Java

  1. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  2. Commentaires Java : Types, utilisation et bonnes pratiques
  3. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  4. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  5. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
  8. Annotations Java expliquées : types, placement et exemples pratiques
  9. Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code