Ich habe mich nur gefragt, was der einfachste Weg ist, über einen Satz unendlich zu iterieren, d. h. wenn er das Ende erreicht, ruft next();
das erste Objekt auf. Ich gehe davon aus, dass dies keine bereits vordefinierte Funktion in Java ist, also suche einfach nach dem einfachsten Weg, dies in Java zu implementieren.
Es gibt eine Methode in der ausgezeichneten Google Collections -Bibliothek, die Folgendes tut:
%Vor%(Ich kann die Google Collections-Bibliothek nicht stark genug empfehlen. Es rockt sehr hart. Ich bin voreingenommen, weil ich für Google arbeite, aber ich glaube, jeder Googler, der Java schreibt, würde Ihnen sagen, wie nützlich die Sammlungen sind.)
Wenn Sie den Iterator erstellen, können Sie in der nächsten Methode eine if-Bedingung haben, die prüft, ob ein anderes Objekt in der Liste ist. Wenn ja, dann geben Sie das Objekt zurück, wenn nicht, dann gehen Sie zurück zum Anfang der Liste und geben das Objekt zurück.
Probieren Sie EndlessIterator
von Cactoos :
Es wird immer "John"
zurückgeben und niemals enden.
Überprüfen Sie auch EndlessIterable
, das implementiert Iterable
und macht das gleiche.
Ich denke, was Sie wollen nie helfen Sie können alles mit Ihrem Iterator machen, das ist einfach, aber Sie müssen vorsichtig sein mit jeder neuen Sache, die Sie hinzufügen, nicht mit diesem Stil verwendet, aber das ist, was Sie wollen, aber:
if (! It.hasNext ()) { während (It.hasPrevious ()) { Es = It.Previous (); } } sonst { Es = It.Next (); }
Auf diese Weise ist nichts, wenn Sie wirklich interessiert sind, sollten Sie stattdessen den nächsten Zeiger vom letzten zum ersten immer beim Drücken einer neuen Liste machen.
Wenn Sie Guava nicht verwenden möchten, aber dennoch eine wiederverwendbare Lösung möchten:
%Vor%Hinweis: Dies unterstützt die Methode remove () nicht, aber sie könnte bei Bedarf einfach hinzugefügt werden. Es ist auch nicht threadsicher.