Was ist ein Stack?

Ein Stack (Stapel) ist von der Klasse Vector abgeleitet und arbeitet nach dem Prinzip last-in-first-out (LIFO). Man kann ihn sich in der Tat wie einen Stapel vorstellen, von dem immer nur das oberste Element entfernt oder hinzugefügt werden kann.

Das Beispiel zeigt eine solche Implementierung ähnlich derjenigen der Klasse java.util.Stack der Java-Klassenbibliothek. Ein Element wird durch die Methode push() dem Stapel an der Spitze hinzugefügt, durch search() im Stapel gesucht und durch pop() entfernt. Mit peek() wird jeweils das oberste Element ermittelt.

import java.util.Vector;

public class StackTest extends Vector<Object> {

    public void push(Object o) {
        this.addElement(o);
    }

    public Object pop() {
        Object o = this.peek();
        int len = this.size();

        if (o != null)
            this.remove(len - 1);
        return o;
    }

    public Object peek() {
        int len = this.size();

        if (len > 0) {
            return elementAt(len - 1);
        }
        return null;
    }

    public int search(Object o) {
        int i = this.lastIndexOf(o);

        if (i >= 0) {
            return size() - i;
        }
        return -1;
    }

    public boolean empty() {
        return this.size() == 0;
    }

    public static void main(String[] args) {
        StackTest s = new StackTest();
        int len=10;
        for(int i=0; i< len; i++){
            s.push(new Integer(i));
        }
        
        System.out.println("Spitze(1): " + ((Integer) s.peek()).intValue());
        for(int i=0; i<4; i++){
            System.out.println("entnehme: " + s.pop());
        }
        System.out.println("Spitze(2): " + ((Integer) s.peek()).intValue());
        System.out.println("3 an Position: " + s.search(new Integer(3)));
    }
}

Die Ausgabe ergibt

Spitze(1): 9
entnehme: 9
entnehme: 8
entnehme: 7
entnehme: 6
Spitze(2): 5
3 an Position: 3

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.