["Einführung in Java
Sofern nicht anders angegeben, wird dieses Buch zitiert.
Lambda-Ausdrücke sind leistungsstarke Notationen, als könnten Sie den Prozess selbst an ein Methodenargument usw. übergeben.
List<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 3, 2, 1, 4, 5);
//Schreiben ohne Lambda-Ausdruck (anonyme Klasse)
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1, o2);
}
});
//Wie schreibe ich mit Lambda-Ausdruck
Collections.sort(list,
(o1, o2) -> Integer.compare(o1, o2)
);
Der Lambda-Ausdruck ist nur "einfach, eine Implementierungsmethode einer anonymen Klasse zu schreiben", aber in Kombination mit der später beschriebenen Stream-API kann er auf leicht verständliche Weise geschrieben werden.
Wird häufig in den Einstellungen des Ereignis-Listeners verwendet.
//So schreiben Sie beim Festlegen eines Klickereignisses unter Android
findViewById(R.id.hogehoge).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Verarbeitung zum Zeitpunkt des Klickens
}
});
Funktionsschnittstelle: Eine Schnittstelle mit nur einer abstrakten Methode
[Try] Überprüfen Sie JavaDoc. JavaDoc Comparator
Funktionsschnittstelle durch Lambda-Ausdruck ersetzt
(Argument) -> {Verarbeitung}
//Grundlegende Grammatik des Lambda-Ausdrucks
Collections.sort(list,
(Integer o1, Integer o2) -> {
return Integer.compare(o1, o2);
}
);
//Argumenttyp weglassen
Collections.sort(list,
(o1, o2) -> {
return Integer.compare(o1, o2);
}
);
//Argumenttyp, Rückgabe und gewellte Klammern wurden weggelassen
Collections.sort(list,
(o1, o2) -> Integer.compare(o1, o2)
);
Die Methode selbst kann ebenfalls zugewiesen werden.
List<String> list = Arrays.asList("X", "Y", "Z");
//Schreiben mit Methodenreferenzen
list.forEach(System.out::println);
//Wie schreibe ich mit Lambda-Ausdruck
list.forEach(str -> System.out.println(str));
Das Argument der Methode "forEach" ist eine Funktionstypschnittstelle mit dem Namen "java.util.function.Consumer".
2.Stream API
Die Stream-API wurde eingeführt, um die "Stream-Verarbeitung", bei der große Datenmengen nacheinander verarbeitet werden, effizient zu beschreiben.
List<Integer> list = Arrays.asList(100, 60, 30, 50, 70);
list.stream() //Stream-Instanziierung
.filter(s -> s>=70) //Zwischenbetrieb.//Extrakt über 70.
.forEach(s -> System.out.println(s)); //Kündigungsoperation.
TODO-Stream-Bild anzeigen
Die Stream-API ist "API, die Was und nicht Wie beschreibt".
Wie: Individuelle Bearbeitung
Was: Zweck der Verarbeitung
Stream API schreibt Zweck ohne Schreibschleifenverarbeitung
Gleiche Idee wie SQL.
//Stream aus Liste oder Set erstellen
List<Integer> list = Arrays.asList(100, 60, 30, 50, 70);
list.stream() //Stream-Instanziierung
.forEach(System.out::println);
//Erstellen Sie einen Stream aus einem numerischen Bereich
IntStream.range(1, 5) //Beinhaltet nicht das Ende
.forEach(System.out::println);
IntStream.rangeClosed(1, 5) //Einschließlich des Endes
.forEach(System.out::println);
List<Integer> list = Arrays.asList(10, 6, 3, 5, 7);
//map:Ersetzen Sie das Element durch einen anderen Wert
list.stream()
.map(s -> s * s)
.forEach(System.out::println);
//filter:Grenzen Sie nur die Elemente ein, die den Bedingungen entsprechen
list.stream()
.filter(s -> s>=7)
.forEach(System.out::println);
//sort:
list.stream()
.sorted((s1,s2) -> s2 - s1) //absteigende Reihenfolge
.forEach(System.out::println);
List<Integer> list = Arrays.asList(10, 6, 3, 5, 7);
//forEach:Ergreifen Sie Maßnahmen für ein Element
list.stream()
.forEach(System.out::println);
//collect:Ergebnisse erstellen
List<Integer> newList = list.stream()
.filter(s -> s>=7)
.collect(Collectors.toList());
//average:Gibt den Durchschnitt zurück(Aggregationsoperation)
list.stream()
.average();
JavaScript auch. .. ..