Cet article vous apporte une introduction à l'utilisation de la pile en Java (avec du code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Stack en Java est une des premières classes héritées. Sun/Oracle a rendu son utilisation obsolète et est désormais réservée uniquement à la compatibilité avec le code hérité.
Implémentation héritée
Comme indiqué ci-dessous. Comme le montre le code, l'implémentation dans java.util.Stack est basée sur des tableaux dynamiques et Vector est également une classe abandonnée.
Personnellement, cette implémentation a deux problèmes
Elle est basée sur Vector et nécessite une synchronisation, donc la perte de performances est sérieuse
Elle est plutôt basée sur un tableau qu'une liste chaînée, et la pile est très volumineuse. Elle nécessite plusieurs extensions, provoquant des pertes de performances inutiles
public class Stack<E> extends Vector<E> { /** * Creates an empty Stack. */ public Stack() { } public E push(E item) { addElement(item); return item; } public synchronized E pop() { E obj; int len = size(); obj = peek(); removeElementAt(len - 1); return obj; } public synchronized E peek() { int len = size(); if (len == 0) throw new EmptyStackException(); return elementAt(len - 1); } public boolean empty() { return size() == 0; } public synchronized int search(Object o) { int i = lastIndexOf(o); if (i >= 0) { return size() - i; } return -1; } /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = 1224463164541339165L; }
Ma propre encapsulation simple
Ce qui suit est une pile basée sur l'encapsulation LinkedList
La pile ici est un décorateur.
import java.util.LinkedList; import java.util.NoSuchElementException; public class Stack<T> { private LinkedList<T> stack; Stack() { stack = new LinkedList<>(); } public void push(T o) { stack.add(o); } public T pop() { if (size() <= 0) { throw new NoSuchElementException("Stack is Empty."); } return stack.removeLast(); } public T peek() { if (size() <= 0) { throw new NoSuchElementException("Stack is Empty."); } return stack.getLast(); } public boolean empty() { return stack.size() == 0; } public int size() { return stack.size(); } }
Cet article est terminé ici. Pour un contenu plus passionnant, vous pouvez faire attention à la colonne Java Video Tutorial du site Web PHP chinois !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!