Hallo!
Ich habe ein Problem beim Erstellen eines Iterators in Java. Ich möchte mithilfe dieses Iterators durch Elemente meiner selbstgeschriebenen verketteten Liste durchgehen. Variable head ist das Erste Element der Datenstruktur. Das Letzte Element zeigt auf null.
Ich habe im Internet tonnenweise Tutorials zum Thema gefunden. Allerdings alle sie sprechen von Datensturkturen, bei denen über Indizes iteriert wird. D.h. beim Erstellen des Iterators wird ein Index = -1 gesetzt. Selbstverständlich Aufruf der Methode next() liefert den Index 0, was dem ersten Element der Datenstruktur entspricht...
Und da fangen meine Probleme an:
Da Ich in meiner Liste keinen Index hab und nur head als Anfangselement, wird der erste Aufruf von next() nicht mein Anfangselement, sondern seinen Nachfolger liefern... Wie geht man mit sowas um? Kann ich nach der Erstellung eines Iterators direkt auf das erste Element zugreifen(ohne next() aufzurufen)?
Ich würde gerne später einfach sowas benutzen können
Ich habe ein Problem beim Erstellen eines Iterators in Java. Ich möchte mithilfe dieses Iterators durch Elemente meiner selbstgeschriebenen verketteten Liste durchgehen. Variable head ist das Erste Element der Datenstruktur. Das Letzte Element zeigt auf null.
Code:
public class LinkedList<V> implements Iterable {
private LinkedListEntry head = null;
...
private class LinkedListEntry {
private int key;
private V value;
private LinkedListEntry next = null;
}
@Override
public Iterator iterator(){
return new Iterator() {
private LinkedListEntry Entry = head;
public boolean hasNext() {
return (Entry.getNext()!=null);
}
public V next() {
Entry = Entry.getNext();
return Entry.getValue();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}
Ich habe im Internet tonnenweise Tutorials zum Thema gefunden. Allerdings alle sie sprechen von Datensturkturen, bei denen über Indizes iteriert wird. D.h. beim Erstellen des Iterators wird ein Index = -1 gesetzt. Selbstverständlich Aufruf der Methode next() liefert den Index 0, was dem ersten Element der Datenstruktur entspricht...
Und da fangen meine Probleme an:
Da Ich in meiner Liste keinen Index hab und nur head als Anfangselement, wird der erste Aufruf von next() nicht mein Anfangselement, sondern seinen Nachfolger liefern... Wie geht man mit sowas um? Kann ich nach der Erstellung eines Iterators direkt auf das erste Element zugreifen(ohne next() aufzurufen)?
Ich würde gerne später einfach sowas benutzen können
Code:
LinkedList<String> list = new LinkedList<String>();
...
for (String s : list) {
System.out.println(s);
}