La classe Java Stack étend la classe Vector. Il vous permet de créer de nouveaux éléments, d'afficher un élément dans la pile, de mettre à jour un élément dans la pile et de supprimer tous les éléments de la pile. Empile les données de processus dans un ordre premier entré dernier sorti (FILO). Cela signifie que vous ne pouvez ajouter ou supprimer des éléments qu'au sommet d'une pile.
La structure de données de la pile a cinq méthodes principales. Cependant, la classe Java Stack a également accès à plus de 40 autres méthodes, dont elle hérite de la classe Vector.
Créer une pile en Java
La classe Pile a un seul constructeur qui vous permet de créer une pile vide. Chaque pile a un argument de type, qui dicte le type de données qu'il stockera.
importer java.util. Empiler;
PubliqueclasserPrincipal{
Publiquestatiqueannulerprincipale(Chaîne [] arguments){
// crée une pile
EmpilerClients = Nouveau Empiler ();
}
}
Le code ci-dessus crée une structure de données Stack appelée Clients qui stocke les valeurs String.
Remplir une pile
L'une des cinq méthodes principales de la classe Stack est la pousser() méthode. Il prend un seul élément qui a le même type de données que la pile et pousse cet élément vers le haut de la pile.
// remplit une pile
Clients.push("Jane Doe");
Clients.push("John Doe");
Clients.push("Patrick Williams");
Clients.push("Paul Smith");
Clients.push("Erick Rowe");
Clients.push("Ella Jones");
Clients.push("Jessica Brown");
Le code ci-dessus remplit la pile des clients avec sept éléments. Il pousse chaque nouvel élément vers le haut de la pile. Ainsi, l'élément en haut de la pile des clients est Jessica Brown. Et vous pouvez le confirmer en utilisant la pile coup d'oeil() méthode. La coup d'oeil() La méthode ne prend aucun argument. Il renvoie l'objet en haut de la pile sans le supprimer.
// affiche l'objet en haut d'une pile
System.out.println (Clients.peek());
Le code ci-dessus renvoie la sortie suivante à la console :
Jessica Brun
Afficher les éléments d'une pile
La structure de données de la pile est assez restrictive dans la façon dont elle vous permet d'interagir avec ses données. Vous devez principalement utiliser une pile via son élément le plus élevé. Cependant, vous pouvez également utiliser des méthodes héritées de la classe Vector pour accéder à des éléments arbitraires. Ces méthodes incluent elementAt et removeElementAt.
Le moyen le plus simple d'obtenir un aperçu du contenu d'une pile est simplement de l'imprimer. Passer un objet Stack à System.out.println et la méthode toString() de Stack produira un joli résumé :
// affiche tous les éléments d'une pile
System.out.println (Clients) ;
Le code ci-dessus imprime la sortie suivante sur la console :
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Recherche d'une position d'élément dans une pile
Si vous connaissez un élément dans la pile, vous pouvez identifier sa position d'index ou sa position par rapport au sommet de la pile. La Indice de() La méthode prend un élément dans la pile et renvoie sa position d'index. N'oubliez pas qu'une pile commence à indexer ses éléments à zéro.
// trouve une position d'index d'élément
System.out.println (Customers.indexOf("Jane Doe"));
Le code ci-dessus imprime la sortie suivante sur la console :
0
La chercher() est l'une des principales méthodes de la classe Stack. Il renvoie une position d'élément par rapport au sommet de la pile, où l'élément en haut de la pile a la position numéro un.
System.out.println (Customers.search("Jane Doe"));
Le code ci-dessus imprime la sortie suivante sur la console :
7
Si vous fournissez le chercher() ou la Indice de() méthodes avec un élément qui n'est pas dans la pile, elles renverront un élément négatif.
System.out.println (Clients.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Le code ci-dessus imprime la sortie suivante sur la console :
-1
-1
Mettre à jour les éléments d'une pile
Vous ne pouvez manipuler un élément qu'au sommet d'une pile. Ainsi, si vous souhaitez mettre à jour un élément qui n'est pas en haut de la pile, vous devrez faire apparaître tous les éléments au-dessus. La populaire() La méthode est l'une des principales méthodes de la pile. La populaire() La méthode ne prend aucun argument. Il supprime l'élément en haut de la pile et le renvoie.
// met à jour un objet
Clients.pop();
Clients.pop();
Clients.push("Ella James");
Clients.push("Jessica Brown");
System.out.println (Clients) ;
Le code ci-dessus imprime la sortie suivante sur la console :
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Comme vous pouvez le voir sur la sortie, le code met à jour le nom de famille d'Ella en James. Cela implique un processus qui extrait les éléments de la pile jusqu'à ce que vous arriviez à l'objet cible. Il fait ensuite apparaître l'objet cible; le met à jour; et le repousse, avec les objets qui étaient au-dessus de l'objet cible, vers la pile. Vous devrez utiliser un programme qui effectue des opérations comme celle ci-dessus, chaque fois que vous souhaitez mettre à jour un élément de votre Stack.
Suppression d'un élément d'une pile
Pour supprimer un seul élément de la structure de données Stack, vous pouvez à nouveau utiliser la méthode pop(). Si l'élément que vous souhaitez supprimer n'est pas en haut, vous pouvez faire apparaître les éléments en haut jusqu'à ce que vous atteigniez celui que vous souhaitez.
Supprimer tous les éléments d'une pile
Pour supprimer tous les éléments d'un Stack, vous pouvez utiliser un Boucle while Java avec la méthode pop() pour supprimer les éléments un par un. Cependant, une approche plus efficace consiste à utiliser les dégager() méthode. La dégager() est celle dont la classe Stack hérite de la classe Vector. Il ne prend aucun argument, ne renvoie rien, mais supprime simplement tous les éléments de la structure de données Stack.
// supprimer tous les éléments d'une pile
Clients.clear();
System.out.println (Clients.empty());
Le code ci-dessus supprime tous les éléments de la pile des clients. Il utilise alors le vide() méthode pour vérifier si la pile est vide. La vide() est une autre méthode principale de la classe Java Stack. Il ne prend aucun argument et renvoie une valeur booléenne. Cette méthode renvoie true si la pile est vide et false sinon.
Le code ci-dessus imprime la sortie suivante sur la console :
vrai
Applications pratiques pour la structure de données de pile
La structure de données Stack est très restrictive. Il n'offre pas autant de flexibilité dans le traitement des données que d'autres structures de données. Cela soulève la question: quand devez-vous utiliser la structure de données Stack ?
La structure de données Stack est idéale pour les applications qui nécessitent un traitement des données dans l'ordre inverse. Ceux-ci inclus:
- Une application qui vérifie si un mot est un palindrome.
- Une application qui convertit les nombres décimaux en nombres binaires.
- Applications qui permettent aux utilisateurs d'annuler.
- Jeux qui permettent à un utilisateur de revenir aux mouvements précédents, comme une partie d'échecs.