www.r-krell-de: Ausgabetext im eigenen Fenster. Zum Beenden Schließknopf ("x") drücken. --------------------------------------------------------------------------------------- Bitte per Knopfdruck einen der mit Java gelieferten Typen wählen! _________________________________________ *** Stack (ab JDK 1.0) *** Der Stack ist der alte und noch gebräuchliche, vom Vector abgeleitete Datentyp für einen Keller (Bei neuer JDK bietet sich der Verwendung von LinkedList für den Keller und für die -- sonst nicht extra implementierte -- Schlange an [in Java gibt's keine Queue]). Aber hier der Stack: Anfangs ist der Keller leer: empty = true Nun werden 10, dann 20, dann 30 und 40 eingefüllt. Dann kommen die obersten beiden Elemente raus, nämlich 40.0 raus und 30.0 raus. Jetzt steht 20.0 oben! Keller wird von vorne nach hinten durchlaufen, alle Element werden gezeigt (Interessant: oben=hinten) -> 10.0 -> 20.0 Seit der JDK/SDK 1.2 stehen aber auch für den Stack die allgemeinen Listenoperationen zur Verfügung: *** Allgemeine List-Methoden (ab SDK 1.2) *** Liste wird mit den Zahlen 0 .. 5 gefüllt Liste wird von vorne nach hinten durchlaufen, alle Elemente werden gezeigt: -> 10.0 -> 20.0 -> 0.0 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 Liste wird von hinten nach vorne durchlaufen: <- 5.0 <- 4.0 <- 3.0 <- 2.0 <- 1.0 <- 0.0 <- 20.0 <- 10.0 Hin und her mit Änderungen: -> 10.0 -> 20.0 [set(44.4)] -> 0.0 <- 0.0 <- 44.4 -> 44.4 -> 0.0 [remove()] -> 1.0 - El. mit Index #4 = 3.0 - El. mit Index #1 = 44.4 - Nächstes Element = 2.0 Neues Element (77.0) wird eingefügt -- hinten (trotz Iterator-Stellung)! Neues Element (33.2) an der Stelle mit Index #2 eingefügt! Elementzahl und -reihenfolge verändert: Iterator neu auffrischen! Liste wird von vorne nach hinten durchlaufen, alle Element werden gezeigt: -> 10.0 -> 44.4 -> 33.2 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 77.0 Ist das Element 77.0 da? true Index des Elements 33.2 ist 2 -- liste.isEmpty() = false Alle Elemente löschen! -- liste.isEmpty() = true _________________________________________ *** Vektor (ab JDK 1.0) *** Vektor wird mit den Zahlen 0 .. 5 gefüllt Vektor wird von vorne nach hinten durchlaufen, alle Element werden gezeigt: -> 0.0 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 Vektor wird von hinten nach vorne durchlaufen: <- 5.0 <- 4.0 <- 3.0 <- 2.0 <- 1.0 <- 0.0 Etwas hin und her: - Vorderstes Elem. = 0.0 = 0.0 -> 1.0, El. #2 = 2.0, El. #5 = 5.0, El. #3 = 3.0 Neues Element (77.0) eingefügt -- hinten (trotz Enumeration-Stellung)! Neues Element (33.2) an der Stelle mit Index #2 eingefügt! Element an der Stelle mit Index #1 gelöscht! - Letztes Element = 77.0 Vektor wird von vorne nach hinten durchlaufen, alle Element werden gezeigt: -> 0.0 -> 33.2 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 77.0 Ist das Element 77.0 da? true Index des Elements 33.2 ist 1, Index des nicht vorh. Elements 198.67 ist -1 -- vektor.isEmpty() = false Seit der JDK/SDK 1.2 stehen aber auch für den Vektor die allgemeinen Listenoperationen zur Verfügung: *** Allgemeine List-Methoden (ab SDK 1.2) *** Liste wird mit den Zahlen 0 .. 5 gefüllt Liste wird von vorne nach hinten durchlaufen, alle Elemente werden gezeigt: -> 0.0 -> 33.2 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 77.0 -> 0.0 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 Liste wird von hinten nach vorne durchlaufen: <- 5.0 <- 4.0 <- 3.0 <- 2.0 <- 1.0 <- 0.0 <- 77.0 <- 5.0 <- 4.0 <- 3.0 <- 2.0 <- 33.2 <- 0.0 Hin und her mit Änderungen: -> 0.0 -> 33.2 [set(44.4)] -> 2.0 <- 2.0 <- 44.4 -> 44.4 -> 2.0 [remove()] -> 3.0 - El. mit Index #4 = 5.0 - El. mit Index #1 = 44.4 - Nächstes Element = 4.0 Neues Element (77.0) wird eingefügt -- hinten (trotz Iterator-Stellung)! Neues Element (33.2) an der Stelle mit Index #2 eingefügt! Elementzahl und -reihenfolge verändert: Iterator neu auffrischen! Liste wird von vorne nach hinten durchlaufen, alle Element werden gezeigt: -> 0.0 -> 44.4 -> 33.2 -> 3.0 -> 4.0 -> 5.0 -> 77.0 -> 0.0 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 77.0 Ist das Element 77.0 da? true Index des Elements 33.2 ist 2 -- liste.isEmpty() = false Alle Elemente löschen! -- liste.isEmpty() = true Alle Elemente löschen! -- vektor.isEmpty() = true _________________________________________ *** ArrayList (ab SDK 1.2) *** ArrayLists haben gegenüber allgemeinen Listen keine besonderen Zugriffsmethoden. Aber die Größe kann beeinflusst werden, um statt langsamem Wachsen beim schrittweisen Aufbau durch eine Anfangs-Mindestgröße Zeit-Aufwand zu sparen. *** Allgemeine List-Methoden (ab SDK 1.2) *** Liste wird mit den Zahlen 0 .. 5 gefüllt Liste wird von vorne nach hinten durchlaufen, alle Elemente werden gezeigt: -> 0.0 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 Liste wird von hinten nach vorne durchlaufen: <- 5.0 <- 4.0 <- 3.0 <- 2.0 <- 1.0 <- 0.0 Hin und her mit Änderungen: -> 0.0 -> 1.0 [set(44.4)] -> 2.0 <- 2.0 <- 44.4 -> 44.4 -> 2.0 [remove()] -> 3.0 - El. mit Index #4 = 5.0 - El. mit Index #1 = 44.4 - Nächstes Element = 4.0 Neues Element (77.0) wird eingefügt -- hinten (trotz Iterator-Stellung)! Neues Element (33.2) an der Stelle mit Index #2 eingefügt! Elementzahl und -reihenfolge verändert: Iterator neu auffrischen! Liste wird von vorne nach hinten durchlaufen, alle Element werden gezeigt: -> 0.0 -> 44.4 -> 33.2 -> 3.0 -> 4.0 -> 5.0 -> 77.0 Ist das Element 77.0 da? true Index des Elements 33.2 ist 2 -- liste.isEmpty() = false Alle Elemente löschen! -- liste.isEmpty() = true Ist die Endgröße erreicht, kann unverbrauchter Platz freigegeben werden. _________________________________________ *** LinkedList (ab SDK 1.2) *** Zunächst kann die LinkedList alle normalen Listen-Operationen (wie auch Vector und ArrayList), wobei sich allerdings jeweils der Aufwand auch für gleichnamige Methoden unterscheiden kann: *** Allgemeine List-Methoden (ab SDK 1.2) *** Liste wird mit den Zahlen 0 .. 5 gefüllt Liste wird von vorne nach hinten durchlaufen, alle Elemente werden gezeigt: -> 0.0 -> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 Liste wird von hinten nach vorne durchlaufen: <- 5.0 <- 4.0 <- 3.0 <- 2.0 <- 1.0 <- 0.0 Hin und her mit Änderungen: -> 0.0 -> 1.0 [set(44.4)] -> 2.0 <- 2.0 <- 44.4 -> 44.4 -> 2.0 [remove()] -> 3.0 - El. mit Index #4 = 5.0 - El. mit Index #1 = 44.4 - Nächstes Element = 4.0 Neues Element (77.0) wird eingefügt -- hinten (trotz Iterator-Stellung)! Neues Element (33.2) an der Stelle mit Index #2 eingefügt! Elementzahl und -reihenfolge verändert: Iterator neu auffrischen! Liste wird von vorne nach hinten durchlaufen, alle Element werden gezeigt: -> 0.0 -> 44.4 -> 33.2 -> 3.0 -> 4.0 -> 5.0 -> 77.0 Ist das Element 77.0 da? true Index des Elements 33.2 ist 2 -- liste.isEmpty() = false Alle Elemente löschen! -- liste.isEmpty() = true Wegen der Implementation als doppelt-verkettete Liste gibt's aber noch zusätzliche, rasche Zugriffe aufs erste bzw. letzte Element (wodurch insbes. auch Keller oder Schlange gut mit LinkedLists gehen). Nachdem erst 1, dann 2 und danach 3 vorne angefügt wurden, steht 3.0 vorne und 1.0 hinten. Letztes Element entfernt, nämlich 1.0, und dafür hinten die 4 dazu, ergibt: -> 3.0 -> 2.0 -> 4.0 --------------------------------------- (C) R. Krell, www.r-krell.de Ausgabetext im eigenen Fenster. Zum Beenden Schließknopf ("x") drücken.