Maison > Java > javaDidacticiel > Introduction à l'utilisation de stack en Java (avec code)

Introduction à l'utilisation de stack en Java (avec code)

不言
Libérer: 2019-03-29 11:13:01
avant
3249 Les gens l'ont consulté

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;
}
Copier après la connexion

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();
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal