Zuallererst bestehen ihre Funktionen darin, jedes Element des Arrays zu durchlaufen und die Methode „accept()“ auszuführen, die die Parameter eingibt. Ihre Implementierungsmethoden sind jedoch unterschiedlich. In einigen spezifischen Fällen führt die Ausführung zu unterschiedlichen Ergebnissen.
In den meisten Fällen führen beide zu den gleichen Ergebnissen, wir werden jedoch einige subtile Unterschiede feststellen.
Erstellen Sie zunächst eine iterative Liste:
List<String> list = Arrays.asList("A","B","C","D");
Der direkteste Weg ist die Verwendung einer erweiterten for-Schleife:
for(String s : list"){ //something }# 🎜🎜#Wenn wir funktionales Java verwenden möchten, können wir auch forEach() verwenden. Wir können dies direkt in der Sammlung tun:
Consumer<String> consumer = s -> {System.out::println}; list.forEach(consumer);Alternativ können wir forEach() im Stream der Sammlung aufrufen:
list.stream().forEach(consumer);Beide Versionen durchlaufen die Liste und geben „Alle“ aus Elemente:
ABCD ABCDIn diesem einfachen Beispiel gibt es keinen Unterschied in der von uns verwendeten forEach(). Differencelist.forEach() verwendet eine erweiterte for-Schleife
default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }list.stream().forEach(): Es konvertiert zuerst die Sammlung als Stream und iterieren Sie dann über den Stream der Sammlung eine Ausnahme# 🎜🎜 #
public class DeleteDifference { public static void main(String[] args) { List<String> list = Arrays.asList("A", "B", "C", "D"); try { list.forEach(item -> { System.out.println(item); list.remove(0); }); } catch (Exception e) { e.printStackTrace(); } list.stream().forEach(item -> { System.out.println(item); list.remove(0); }); } }
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen list.forEach() und list.stream().forEach() in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!