LinkedList Spliterator

In dieser Aufgabe soll nun versucht werden, ein Spliterator für einfach verkettete Listen zu implementieren. Es wird sich herausstellen, dass dieses nicht so optimal geht, wie für die Array basierten Listen.

Gegeben sei folgende Schnittstelle:

package name.panitz.util;

import java.util.Spliterator;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

public interface Li<A> {
  Spliterator<A> getSpliterator();

  default Stream<A> stream() {
    return StreamSupport.stream(getSpliterator(), false);
  }

  default Stream<A> parallelStream() {
    return StreamSupport.stream(getSpliterator(), true);
  }

}

Implementieren Sie diese Schnittstelle mit Hilfe der Klasse LL für einfach verkettete Liste. Dazu müssen Sie die Methode getSpliterator implementieren. Machen Sie dieses als private innere Klasse. Sie dürfen dabei keine Methode size für die Liste verwenden. Die beiden problematischen Methoden der inneren Spliteratorklasse sind dabei wie folgt umzusetzen: