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

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

不言
不言avant
2019-03-29 11:13:013228parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer