Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen list.forEach() und list.stream().forEach() in Java?

Was ist der Unterschied zwischen list.forEach() und list.stream().forEach() in Java?

WBOY
WBOYnach vorne
2023-04-24 22:07:061484Durchsuche

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.

Übersicht

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 ABCD

In diesem einfachen Beispiel gibt es keinen Unterschied in der von uns verwendeten forEach().

Difference

list.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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen