Effektive Java 3rd Edition Kapitel 7 Lambda und Stream

[Effective Java 3rd Edition](https://www.amazon.co.jp/Effective-Java-%E7%AC%AC3%E7%89%88-%E3%], ein Muss für fortgeschrittene Java-Benutzer und höher 82% B8% E3% 83% A7% E3% 82% B7% E3% 83% A5% E3% 82% A2% E3% 83% BB% E3% 83% 96% E3% 83% AD% E3% 83% 83% E3% 82% AF-ebook / dp / B07RHX1K53) hat eine Kindle-Version, daher werde ich sie zusammenfassen.

Zurück: Effektive Java 3rd Edition, Kapitel 6, Aufzählung und Anmerkungen Weiter: Effektive Java 3rd Edition Kapitel 8 Methoden

Punkt 42 Wählen Sie Lambda anstelle der anonymen Klasse

//Anonyme Klasse
Collections.sort(words, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return Integer.compare(o1.length(), o2.length());
    }
});
//Verwenden Sie Lambda
Collections.sort(words, (o1, o2) -> Integer.compare(o1.length(), o2.length()));
//Vergleicher Bauweise
Collections.sort(words, comparingInt(String::length));
//Noch kürzer in Java 8
words.sort(comparingInt(String::length));

--Beispiel einer Aufzählung mit Funktionsobjektfeldern und konstantenspezifischem Verhalten.

public enum Operation {
    PLUS("+", (x, y) -> x + y),
    MINUS("-", (x, y) -> x + y),
    TIMES("*", (x, y) -> x + y),
    DIVIDE("/", (x, y) -> x + y);

    private final String symbol;
    private final DoubleBinaryOperator op;

    Operation(String symbol, DoubleBinaryOperator op) {
        this.symbol = symbol;
        this.op = op;
    }
    @Override public String toString() {
        return  symbol;
    }
    public double apply(double x, double y) {
        return op.applyAsDouble(x, y)
    }
}

Punkt 43 Wählen Sie eine Methodenreferenz anstelle eines Lambda aus

Punkt 44: Verwenden Sie eine Standardfunktionsschnittstelle

--java.util.Function verfügt über 43 Schnittstellen, an die sich alle nicht erinnern können. Solange Sie sich jedoch an die 6 grundlegenden Schnittstellen erinnern, können die restlichen Schnittstellen bei Bedarf abgeleitet werden.

Schnittstelle Funktionssignatur Beispiel
UnaryOperator T apply(T t) String::toLowerCase
BinaryOperator T apply(T t1, T t2) BigInteger::add
Predicate boolean test(T t) Collection::isEmpty
Function<T,R> R apply(T t) Arrays::asList
Supplier T get() Instant::now
Consumer void accept(T t) System.out::println

Punkt 45 Verwenden Sie den Stream vorsichtig

Punkt 46 Wählen Sie eine Funktion aus, die keine Nebenwirkungen im Stream hat

Punkt 47 Wählen Sie Sammlung über Stream als Rückgabewert aus

Punkt 48 Achten Sie beim Parallelisieren von Streams darauf

Stream-Pipeline-Parallelisierung zum Zählen von Primzahlen


    static long pi(long n) {
        return LongStream.rangeClosed(2, n)
                .parallel()
                .mapToObj(BigInteger::valueOf)
                .filter(i -> i.isProbablePrime(50))
                .count();
    }

Recommended Posts

Effektive Java 3rd Edition Kapitel 7 Lambda und Stream
Effektive Java 3rd Edition Kapitel 4 Klassen und Schnittstellen
Effektive Java 3rd Edition Kapitel 5 Generika
Effektive Java 3rd Edition Kapitel 8 Methoden
Effektive Java 3rd Edition Kapitel 2 Objekterstellung und Verschwindenlassen
Effektives Java 3rd Edition Kapitel 9 Programm Allgemein
Effektive Java 3rd Edition Kapitel 3 Allen Objekten gemeinsame Methoden
Was hat sich zwischen Effective Java 2nd Edition und 3rd Edition geändert?
Effektives Java Kapitel 2
Effektives Java Kapitel 6 34-35
Effektives Java Kapitel 4 15-22
Effektives Java Kapitel 3
effektive Java 3. Zusammenfassung
[Java] Sortieren Sie die Liste mit Streams und Lambda-Ausdrücken
Effektive Java 3rd Edition Abschnitt 85 Auswählen einer Alternative zur Java-Serialisierung
Heutzutage Java Lambda Expressions und Stream API
[Read Effective Java] Kapitel 2 Punkt 7 "Vermeiden Sie Finalizer"
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Effektive Zusammenfassung der Umfrage zu Java 2nd Edition
[Read Effective Java] Kapitel 3 Punkt 10 "Immer toString überschreiben"
Java 8 startet jetzt ~ für jeden und Lambda-Ausdruck ~
Ich habe versucht, Effective Java 3rd Edition "fast alle Kapitel" in "leicht lesbarem Japanisch" zu erklären.
Stream und paralleler Stream
Java und JavaScript
XXE und Java
Hallo Java Lambda
[Java] Lambda-Ausdruck
Java Lambda Ausdruck
Ich habe den Eingabe- / Ausgabetyp von Java Lambda ~ POJO Edition ~ ausprobiert
[Read Effective Java] Kapitel 3 Punkt 12 "Berücksichtigung der Implementierung von Comparable"
[Read Effective Java] Kapitel 2 Punkt 6 "Veraltete Objektreferenzen entfernen"
Aktualisierungen von Effective Java Third Edition 2nd Edition Persönliche Notizen
Ich werde einen Auszug dessen schreiben, was ich beim Lesen von Effective Java 3rd Edition interessant fand