Funktionsweise Iterator unklar

bodo1

Mitglied
Bin gerade dabei mich mit dem Thema verkettete Listen auseinanderzusetzten und da habe teilweise so meine Probleme.
Dass ich einen Itarator brauche versteh ich ja gerade noch so. Viele sprechen hier ja auch vom "Knoten". Der Iterator zeigt Inhalt von einem Listenelement an und zeigt zum nächsten Listenelement (quasi der Nachfolger).
Bei dem Quellcode jedoch stockt es ganz schön.

Java:
package objekte;

public class Liste {

	private ListenElement erstesElement;

	public Liste(){
		erstesElement = null;
	}

	public boolean istLeer(){
		return erstesElement == null;
	}

	public void fuegeAmAnfangEin(Object obj) throws Listenfehler{
		if(obj == null){
			throw new Listenfehler("Durch die fuegeAmAnfangEin()-Methode erfahren wir, dass" +
			" kein ListenElement am Anfang existiert.");
		}
		ListenElement neuesElement = new ListenElement(obj, erstesElement);
		erstesElement = neuesElement;
	}
	public IListenIterator iterator(){
		return new ListenIterator(anfang);
	}

	public ListenElement getErstesElement() {
		return erstesElement;
	}

	public void setErstesElement(ListenElement erstesElement) {
		this.erstesElement = erstesElement;
	}	

}

Zeile 23 und 24 habe ich wirklich komplett nach einer Musterlösung so abgeschrieben und versteh nicht warum das passiert.
Wozu muss ich mir denn noch ein Interface ListenIterator erstellen? geht das nicht auch irgendwie ohne?
Vielen Dank
 
allgemein geht alles ohne Interface, wenn es etwa nur ein Implementierung gibt,
Interface ist allgemein nützlich falls doch mehrere Implementierungen, das soll vielleicht angedeutet/ geübt werden

> Wozu muss ich mir denn noch ein Interface ListenIterator erstellen?

dem Code nach wäre IListenIterator das Interface
 
ja, was auch immer mit 'geht' gemeint ist,
die Klasse für sich würde auch kompilieren wenn direkt ListenIterator oder gar Object zurückgegeben wird, mal angenommen es gibt überhaupt die Klasse ListenIterator ,

was evtl. Aufrufer der Klasse erwarten und was die Aufgabe als richtige Lösung bestimmt, das sind natürlich andere Fragen

im normalen Java kennt jeder nur das Interface Iterator
und will nicht die kleinliche Implementierung von LinkedList, ArrayList, Vector usw. als direkten Klassennamen benennen
(auch wenn es gar nicht unbedingt verschiedene Implementierungen gibt, wird strenggenommen einheitlich in AbstractList gemacht)
 
hat denn jemand vll ein einfaches bsp. für eine einfach- bzw. doppelt verkettete liste?
sprich wo nur das notwendigste drinsteht?😉
 
was hat denn die Liste mit dem Iterator zu tun, ist das nun eine ganz andere Frage?
dazu von mir noch angemerkt dass 'doppelt verkettete liste java' in Suchmaschinen unendliches findet
 
Hab den Code oben nicht kontrolliert, aber da scheint ja schon eine einfache verkettete Liste zu stehen.
Die Erweiterung einer doppelt verketteten Liste besteht darin, dass ein Listenelement nicht nur seinen Nachfolger sondern zusätzlich auch seinen Vorgänger kennt.
 

Zurück
Oben