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 }
Consumer<String> consumer = s -> {System.out::println}; list.forEach(consumer);
list.stream().forEach(consumer);
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); } }
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!