Wie kann ich einen Iterator erstellen, der niemals endet?

7

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.

    
soldier.moth 19.06.2009, 06:29
quelle

8 Antworten

32

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.)

    
Jon Skeet 19.06.2009, 06:47
quelle
5
%Vor%     
AlexC 19.06.2009 11:55
quelle
1

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.

    
mnuzzo 19.06.2009 06:31
quelle
1

Probieren Sie EndlessIterator von Cactoos :

%Vor%

Es wird immer "John" zurückgeben und niemals enden.

Überprüfen Sie auch EndlessIterable , das implementiert Iterable und macht das gleiche.

    
yegor256 19.06.2017 09:04
quelle
0

Das ist, was ich mir vorstellen kann ...

%Vor%     
soldier.moth 19.06.2009 06:32
quelle
0

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.

    
Malid 21.04.2010 21:51
quelle
0

Wie wäre es?

%Vor%     
bluelurker 25.05.2016 05:55
quelle
0

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.

    
Emanuel Moecklin 13.06.2017 18:45
quelle

Tags und Links