Frage

Ich habe eine benutzerdefinierte, generische, einzigartige Linkedliste, die ich selbst aufgebaut habe. Ich kann einwandfrei hinzufügen, usw. zur Liste hinzufügen, entfernen. Ich möchte den Java -Listiterator in meine Klasse implementieren. Wie würde ich damit beginnen? Welche Methoden muss ich meiner Klasse hinzufügen? Alles, was ich im Web finden kann, ist Beispiele für die Verwendung des Listiterators in der Standard -Java -LinkedList, die für mich nicht gut ist. Vielen Dank!

War es hilfreich?

Lösung

Sie erstellen eine zweite Klasse (normalerweise eine verschachtelte Klasse Ihrer verknüpften Liste), die alle Funktionen der Listiterator -Schnittstelle implementiert. Beachten Sie, dass einige Funktionen (wie wie add und remove) sind optional - Sie können einfach eine nicht unterstützte OperationException werfen. Ihre verknüpfte Listenklasse muss die Methoden implementieren listIterator() und listIterator(int) um eine Instanz Ihrer zweiten Klasse zurückzugeben.

Andere Tipps

Sie sollten die implementieren Iterator oder der Listiterator Schnittstelle.

Suchen Sie nach den Methoden, die Listiterator hat. Sie müssen sicherstellen, dass Ihre Version dieselben Methoden enthält.

Wenn Sie können, suchen Sie nach einem Interface Dieser Listiterator verwendet und implementiert diese Schnittstelle.

Für die Leistung können Sie implementieren ListIterator und behalten Sie eine "rückwärts" -Version Ihrer Liste, während Sie sie durch sie iterieren. Dies würde eine doppelt verknüpfte Liste nachahmen, jedoch nur für den Iterator.

Es ist jedoch wahrscheinlich sicherer, Ihre verknüpfte Liste nur als doppelt verknüpfte Liste darunter zu implementieren.

Wenn es sich um eine einzig verknüpfte Liste handelt, implementieren Sie sich ListIterator wird schwierig (wenn auch nicht unmöglich), da es in beide Richtungen navigieren muss, was Sie nur implementieren können, indem Sie immer wieder vom Kopf neu starten.

Machen Sie entweder Ihre Liste doppelt, oder Sie müssen werfen UnsupportedOperationException auf viele Methoden. (Oder leben mit O (n) Leistung in der Hälfte der Methoden)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top