Titel | Inhalt | Suchen | Index | API | Go To Java 2, Zweite Auflage, Handbuch der Java-Programmierung |
<< | < | > | >> | Kapitel 14 - Collections I |
Ein Stack ist eine Datenstruktur, die nach dem LIFO-Prinzip (last-in-first-out) arbeitet. Die Elemente werden am vorderen Ende der Liste eingefügt und von dort auch wieder entnommen. Das heißt, die zuletzt eingefügten Elemente werden zuerst entnommen und die zuerst eingefügten zuletzt.
In Java ist ein Stack eine Ableitung eines Vektors, der um neue Zugriffsfunktionen erweitert wurde, um das typische Verhalten eines Stacks zu implementieren. Obwohl dies eine ökonomische Vorgehensweise ist, bedeutet es, daß ein Stack alle Methoden eines Vektors erbt und damit auch wie ein Vektor verwendet werden kann. Wir wollen diese Tatsache hier ignorieren und uns mit den spezifischen Eigenschaften eines Stacks beschäftigen.
Der Konstruktor der Klasse Stack ist parameterlos:
public Stack() |
java.util.Stack |
Das Anfügen neuer Elemente wird durch einen Aufruf der Methode push erledigt und erfolgt wie üblich am oberen Ende des Stacks. Die Methode liefert als Rückgabewert das eingefügte Objekt:
public Object push(Object item) |
java.util.Stack |
Der Zugriff auf das oberste Element kann mit einer der Methoden pop oder peek erfolgen. Beide liefern das oberste Element des Stacks, pop entfernt es anschließend vom Stack:
public Object pop() public Object peek() |
java.util.Stack |
Des weiteren gibt es eine Methode empty, um festzustellen, ob der Stack leer ist, und eine Methode search, die nach einem beliebigen Element sucht und als Rückgabewert die Distanz zwischen gefundenem Element und oberstem Stack-Element angibt:
public boolean empty() public int search(Object o) |
java.util.Stack |
Das folgende Beispiel verdeutlicht die Anwendung eines Stacks:
001 /* Listing1402.java */ 002 003 import java.util.*; 004 005 public class Listing1402 006 { 007 public static void main(String[] args) 008 { 009 Stack s = new Stack(); 010 011 s.push("Erstes Element"); 012 s.push("Zweites Element"); 013 s.push("Drittes Element"); 014 while (true) { 015 try { 016 System.out.println(s.pop()); 017 } catch (EmptyStackException e) { 018 break; 019 } 020 } 021 } 022 } |
Listing1402.java |
Das Programm erzeugt einen Stack
und fügt die Werte "Erstes Element", "Zweites Element" und "Drittes
Element" ein. Anschließend entfernt es so lange Elemente aus
dem Stack, bis die Ausgabeschleife durch eine Ausnahme des Typs EmptyStackException
beendet wird. Durch die Arbeitsweise des Stack
werden die Elemente in der umgekehrten Eingabereihenfolge auf dem
Bildschirm ausgegeben:
Drittes Element
Zweites Element
Erstes Element
Titel | Inhalt | Suchen | Index | API | Go To Java 2, Zweite Auflage, Addison Wesley, Version 2.0 |
<< | < | > | >> | © 2000 Guido Krüger, http://www.gkrueger.com |