Du musst dir "next" in der Schleife auch merken. So in etwas sollte die "get(int i)" Methode aussehen.
Neben "first" bietet sich bei einer doppelt verketteten Liste auch noch "last" an, um je nach Index von hinten anzufangen.
Deshalb steht man auch je nach Anwendungsfall immer vor der Frage, ob man LinkedList oder ArrayList verwendet. Wir hatten dazu mal eine Übungsaufgabe, in der wir beide gegenüberstellen sollten und die Zeit messen. Z.b. eine Millionen Element immer am Ende einfügen, oder eine Millionen Mal einen Index Zugriff machen. Da merkt man ganz schnell, wo die Listen Ihre Schwächen haben.
Java:
public T get(int i) {
if(i >= this.size)
throw new ArrayIndexOutOfBoundsException("Die Liste ist nicht so groß!");
//First ist immer dein Start-Element
ElementKlasse tmp = this.first;
while(i-- > 0) {
tmp = tmp.getNext();
}
return tmp.getValue();
}
Neben "first" bietet sich bei einer doppelt verketteten Liste auch noch "last" an, um je nach Index von hinten anzufangen.
PS: Oder muss ich alle Elemente immer über das eine definierte Anfangselement ansteuern und dann eben n mal die next-Methode aufrufen, um zu Element n-1 zu kommen? Dann wäre jede Operation inmitten der Liste aber wirklich unschön...
Deshalb steht man auch je nach Anwendungsfall immer vor der Frage, ob man LinkedList oder ArrayList verwendet. Wir hatten dazu mal eine Übungsaufgabe, in der wir beide gegenüberstellen sollten und die Zeit messen. Z.b. eine Millionen Element immer am Ende einfügen, oder eine Millionen Mal einen Index Zugriff machen. Da merkt man ganz schnell, wo die Listen Ihre Schwächen haben.