La pile est l'une des structures de données les plus importantes du langage Java. Son implémentation doit au moins inclure les méthodes suivantes :
1. Opération pop() pop, affiche l'élément supérieur de la pile.
2. opération de poussée (E e)
3.peek() Afficher l'élément supérieur de la pile
4.isEmpty() La pile est-elle vide ?
De plus, lors de la mise en œuvre d’une pile, plusieurs problèmes doivent être pris en compte :
1. La taille initiale de la pile et comment ajouter un nouvel espace de pile une fois la pile pleine
2. La synchronisation est requise lors de la mise à jour de la pile
Un exemple simple, utilisant un tableau pour implémenter une pile, le code est le suivant :
Copiez le code comme suit :
classe publique Pile<E> {
// Java ne prend pas en charge les tableaux génériques. Si vous devez les utiliser, veuillez utiliser le conteneur fourni par Java.
pile d'objets privés[] ;
//Taille initiale par défaut de la pile
privé statique final int INIT_SIZE = 2;
//Index supérieur de la pile
index int privé ;
publicStack() {
stack = nouvel objet[INIT_SIZE];
indice = -1 ;
}
/**
*Méthode de construction
*
* @param initSize
* Taille initiale de la pile
*/
pile publique (int initSize) {
si (initSize < 0) {
lancer une nouvelle IllegalArgumentException();
}
stack = nouvel objet[initSize];
indice = -1 ;
}
/**
* Opération pop
*
* @return objet supérieur de la pile
*/
public synchronisé E pop() {
si (!isEmpty()) {
E temp = coup d'oeil();
pile[index--] = null ;
température de retour ;
}
renvoie null ;
}
/**
* Opération de poussée
*
* @param obj
* Objet en attente d'être poussé sur la pile
*/
push vide synchronisé public (E obj) {
si (isFull()) {
Objet[] temp = pile ;
// Si la pile est pleine, crée une pile avec deux fois l'espace de pile actuel
stack = new Object[2 * stack.length];
System.arraycopy(temp, 0, stack, 0, temp.length);
}
pile[++index] = obj;
}
/**
* Afficher l'objet supérieur sur la pile
*
* @return objet supérieur de la pile
*/
public E coup d'oeil() {
si (!isEmpty()) {
return (E) pile[index] ;
}
renvoie null ;
}
/**
* Vérifiez si la pile est vide
*
* @return Renvoie vrai si la pile est vide, sinon renvoie faux
*/
public booléen isEmpty() {
indice de retour == -1 ;
}
/**
* Vérifiez si la pile est pleine
*
* @return Renvoie vrai si la pile est pleine, sinon renvoie faux
*/
public booléen isFull() {
return index >= stack.length - 1 ;
}
}
Enfin, la structure des données de la pile (java.util.Stack) est implémentée en Java. Elle est implémentée en héritant de la classe Vector, dans des circonstances normales, nous pouvons simplement l'utiliser directement.