Classe de pile Java
Classe de pile Java
Dans ce didacticiel, nous allons découvrir la classe Java Stack et ses méthodes à l'aide d'exemples.
Le framework de collections Java a une classe nommée Stack
qui fournit la fonctionnalité de la structure de données de la pile.
Le Stack
la classe étend le Vector
classe.
Implémentation de la pile
Dans la pile, les éléments sont stockés et accessibles dans Last In First Out manière. Autrement dit, les éléments sont ajoutés en haut de la pile et supprimés du haut de la pile.
Créer une pile
Afin de créer une pile, nous devons importer le java.util.Stack
paquet d'abord. Une fois le package importé, voici comment créer une pile en Java.
Stack<Type> stacks = new Stack<>();
Ici, Type
indique le type de pile. Par exemple,
// Create Integer type stack
Stack<Integer> stacks = new Stack<>();
// Create String type stack
Stack<String> stacks = new Stack<>();
Méthodes de pile
Depuis Stack
étend le Vector
classe, elle hérite de toutes les méthodes Vector
. Pour en savoir plus sur les différents Vector
méthodes, visitez Java Vector Class.
Outre ces méthodes, le Stack
la classe comprend 5 méthodes supplémentaires qui la distinguent de Vector
.
Méthode push()
Pour ajouter un élément en haut de la pile, nous utilisons le push()
méthode. Par exemple,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
// Add elements to Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
}
}
Sortie
Stack: [Dog, Horse, Cat]
Méthode pop()
Pour supprimer un élément du haut de la pile, on utilise le pop()
méthode. Par exemple,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
// Add elements to Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Initial Stack: " + animals);
// Remove element stacks
String element = animals.pop();
System.out.println("Removed Element: " + element);
}
}
Sortie
Initial Stack: [Dog, Horse, Cat] Removed Element: Cat
Méthode peek()
Le peek()
La méthode renvoie un objet du haut de la pile. Par exemple,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
// Add elements to Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
// Access element from the top
String element = animals.peek();
System.out.println("Element at top: " + element);
}
}
Sortie
Stack: [Dog, Horse, Cat] Element at top: Cat
méthode search()
Pour rechercher un élément dans la pile, on utilise le search()
méthode. Il renvoie la position de l'élément à partir du haut de la pile. Par exemple,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
// Add elements to Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
// Search an element
int position = animals.search("Horse");
System.out.println("Position of Horse: " + position);
}
}
Sortie
Stack: [Dog, Horse, Cat] Position of Horse: 2
Méthode vide()
Pour vérifier si une pile est vide ou non, on utilise le empty()
méthode. Par exemple,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
// Add elements to Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
// Check if stack is empty
boolean result = animals.empty();
System.out.println("Is the stack empty? " + result);
}
}
Sortie
Stack: [Dog, Horse, Cat] Is the stack empty? false
Utiliser ArrayDeque au lieu de Stack
Le Stack
La classe fournit l'implémentation directe de la structure de données de la pile. Cependant, il est recommandé de ne pas l'utiliser. Utilisez plutôt le ArrayDeque
classe (implémente le Deque
interface) pour implémenter la structure de données de la pile en Java.
Pour en savoir plus, visitez :
- Java ArrayDeque
- Pourquoi utiliser Deque plutôt que Stack ?
Java