Heim > Java > javaLernprogramm > Einführung in die Verwendung von Stack in Java (mit Code)

Einführung in die Verwendung von Stack in Java (mit Code)

不言
Freigeben: 2019-03-29 11:13:01
nach vorne
3249 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die Verwendung des Stacks (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.

Stack in Java ist eine frühe Legacy-Klasse, deren Verwendung von Sun/Oracle eingestellt wurde und die jetzt nur noch aus Kompatibilitätsgründen mit Legacy-Code beibehalten wird.

Legacy-Implementierung

Wie unten gezeigt Wie im Code gezeigt, basiert die Implementierung in java.util.Stack auf dynamischen Arrays, und Vector ist ebenfalls eine aufgegebene Klasse.

Persönlich hat diese Implementierung zwei Probleme

Sie basiert auf Vector und erfordert eine Synchronisierung, daher ist der Leistungsverlust schwerwiegend

Sie basiert eher auf einem Array als eine verknüpfte Liste, und der Stapel ist sehr groß. Es sind mehrere Erweiterungen erforderlich, was zu unnötigen Leistungsverlusten führt

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;
}
Nach dem Login kopieren

Meine eigene einfache Kapselung

Das Folgende ist ein Stapel, der auf der LinkedList-Kapselung basiert

Der Stapel hier ist ein Dekorator.

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();
    }
}
Nach dem Login kopieren

Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie in der Spalte Java Video Tutorial auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von Stack in Java (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage