Stackabarbeitung - Wozu dient das "True" ?

Werniman

Mitglied
Hallo,
ich bin noch immer dabei, mein Lieblings-Java-Buch abzuarbeiten und bin nun beim Thema Stacks angeangt. Hier habe ich folgenden Code und steh etwas auf dem Schlauch:

Code:
public class DequeStack {

    public static void main(String[] args) {
        new DequeStack();
    }

    public DequeStack() {
        LinkedList<String> stack = new LinkedList<>();
        stack.push("Alpha");
        stack.push("Beta");
        stack.push("Charlie");
        try {
            while (true) {
                System.out.println(stack.pop());
            }
        } catch (NoSuchElementException e) {
        }
    }
}

Push legt die Objekte auf den Stapel. Dann soll versucht werden,sie per pop wieder vom Stapel runterzunehmen. Aber wo kommt das einzelne true hinter der While-Anweisung her ? Müsste da nicht vorher erstmal geprüft werden, ob da noch weitere Objekte vorhanden sind ? Irgendwie macht es den Eindruck, dass die While-Schleife erstmal prüft, ob ihr Anweisungsblock überhaupt ausführbar ist, bevor sie ihn tatsächlich ausführt.
 
Der Code sagt mit dem true er soll "endlos" die Schleife wiederholen, also "endlos" ein Element vom Stack runterholen. Natürlich macht endlos keinen Sinn hier. Der Code erwartet an der Stelle, dass irgendwann die NoSuchElementException geworfen wird. Mit einer solchen Exception würde das Programm dann aus der Endlos-Schleife hinausspringen und beenden.

Eine solche Logik ist meiner Erfahrung nach aber eine Bad Practice. Besser wäre es pre-pop zu prüfen, ob noch Elemente da sind. z.B. mit isEmpty()
 

Zurück
Oben