Ich habe die folgende Methode mit einem Java8 BiConsumer erstellt:
%Vor%benutze es so:
%Vor%Dies wird ausgegeben:
%Vor%Sie können die Indizierung mit einem Iterator vermeiden; Dies funktioniert für jedes Iterable , nicht nur eine Liste. Holen Sie sich einfach einen Iterator und inkrementieren Sie ihn zweimal pro Schleifeniteration:
%Vor% Dies setzt eine Liste gerader Länge voraus und wirft NoSuchElementException
auf den letzten Durchlauf, wenn es eine ungerade Länge hat. Sie können dies auf verschiedene Arten handhaben:
try
- catch
; Überprüfen des zweiten Elements:
%Vor% Iteratoren verwirren einige Leute, so dass Sie auch eine for-each-Schleife mit einer Verzweigung und einer zusätzlichen Flip-Flop-Variablen für Parität verwenden können. Dies ist viel schlimmer, da es die Logik der Schleife viel komplizierter macht, um die Iteration zu vereinfachen: anstatt dass die Aktion einmal pro Durchgang durch die Schleife in Folge und ohne Verzweigung ausgeführt wird, muss man sie stattdessen zweimal durchlaufen und mental verzweigen. Beachten Sie, dass dies das letzte Element überspringt, wenn es eine ungerade Länge hat; könnte nachträglich eine Überprüfung von isFirst
hinzufügen, wenn auch diese Fälle behandelt werden sollen.
Beachten Sie schließlich, dass all diese Iteratoren und Hilfsvariablen einen übermäßigen Geltungsbereich haben (sie sind nur für die Schleife selbst von Nutzen und belasten die lokale Umgebung): Sie könnten in Blöcke eingeschlossen werden, um den Bereich zu begrenzen, obwohl dies normalerweise der Fall ist Verschachtelung gilt als schlechter als der übermäßige Umfang:
%Vor%