Verwenden Sie Stream in Java?

Java 9 Stream Neue Funktionen

Java 9 fügt Stream drei Funktionen hinzu.

・ Zieldaten bei Erfüllung der TakeWhile-Bedingung ・ Daten, die die dropWhile-Bedingung erfüllen, werden ausgeschlossen. ・ OfNullable Erlaube null

Aber ich glaube nicht, dass ich jemanden (oder eine Quelle) sehe, der Stream vor der neuen Funktion bei der Arbeit verwendet. (Ich habe nicht viele Möglichkeiten, neue Dinge bei der Arbeit zu nutzen)

Wenn Sie keine neuen Dinge anfassen, bleiben sie zurück, und ich habe mir kurz angesehen, wie sie waren.

Wann verwenden Sie Stream überhaupt?

Ich denke, ich werde es wahrscheinlich zu solchen Zeiten verwenden.

・ Grundsätzlich können Sie mit weniger Beschreibung als zuvor schreiben, sodass die Quelle aktualisiert wird.

Wie benutze ich Stream?

Beispiel 1: Schleifen Sie die Liste und übergeben Sie sie an die Methode

List<String> list = Arrays.asList("Teil 1", "Teil 2", "Teil 3", "Teil 4", "Teil 5");
//Übergabe der Zeichenfolge in der Liste an die Fuga-Methode der Hoge-Klasse
list.stream().forEach(Hoge::fuga);

Beispiel 2: Erstellen Sie eine Ganzzahlliste aus einer Zeichenfolgenliste

List<String> sl= Arrays.asList("11", "12", "13", "14", "15");
List<Integer> il = sl.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList());

Beispiel 3: Nachdem Sie alle Pfade von csv unter "C: \ temp" abgerufen haben, ermitteln Sie die Anzahl der Dateien, die mit "A" beginnen.

Path target = Paths.get("C:\temp");
try(
    Stream<Path> paths = Files.find(target , Integer.MAX_VALUE, (p, a) -> p.getFileName().endsWith(".csv"));
){
    //Versuchen Sie, nur CSV zu zählen, das mit "A" beginnt.
    long c = paths.filter(p -> p.getFileName().startsWith("A")).count();
}

Das "->", das hier und da erscheint, ist der "Lambda-Typ".

Die streamAPI verfügt normalerweise über ein Consumer-Argument, mit dem Sie Methodenreferenzen oder Lambda-Ausdrücke übergeben können.

Wenn "->" angezeigt wird, ist die linke Seite das Argument und die rechte Seite der Inhalt der Methode.

Die Methodenreferenz ist wie "Hoge :: fuga" geschrieben. Wenn Sie es nur lesen, können Sie denken, dass die Klammern von "Hoge.fuga (str)" weggelassen werden.

Versuche zu vergleichen

Schreiben wir, wie stark die Quelle mithilfe von Stream schrumpft.

■ Bei Verwendung von Stream

paths.filter(p -> p.getFileName().startsWith("A"))

■ Wenn Sie Stream nicht verwenden

/**Teil filtern*/
private List<Path> filter(List<Path> paths) {
    List result = new ArrayList<>();
    for (Path p : paths) {
        if (isStartA(p)) {
            result.add(p);
        }
    }
    return result;
}
/**Lambda-Stil Teil*/
private boolean isStartA(Path p) {
    return p.getFileName().startsWith("A");
}

Sie können sehen, wie die Beschreibung reduziert wird, indem Sie Stream- und Lambda-Ausdrücke verwenden!

Zusammenfassung

Wenn man sich die obigen Ergebnisse ansieht, scheint es besser zu sein, die Stream- oder Lambda-Formel mehr Bang Bang zu verwenden. Wenn Sie es bei der Arbeit tatsächlich verwenden und nicht "für / solange verboten" sagen, wird die Quelle durcheinander gebracht. Es ist eine Quelle, die für diejenigen, die es nicht wissen, keinen Sinn ergibt. (Leute, die das nicht verstehen, fühlen sich schlecht)

Da es bequem aktualisiert wurde, möchte ich auch Menschen aktualisieren!

Recommended Posts

Verwenden Sie Stream in Java?
[Java] Verwenden Sie nicht "+" im Anhang!
Verwenden Sie OpenCV mit Java
Verwenden Sie PreparedStatement in Java
Java Stream API in 5 Minuten
Führen Sie Scala's Option.or Null in Java aus
Mach HelloWorld mit Java / IntelliJ / Gradle
Verwenden wir Twilio in Java! (Einführung)
Dinge, die Sie häufig bei der Webentwicklung mit Java verwenden
Verwenden Sie zusammengesetzte Schlüssel in Java Maps.
Kannst du es machen? Java EE
Wie verwende ich Klassen in Java?
In Java 10, wenn Gradle Eclipse abgeschlossen ist und JavaSE-1.10 herauskommt, ...
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 2-Programmierung)
Versuchen Sie es mit der Stream-API in Java
So führen Sie eine Basiskonvertierung in Java durch
[Java] Verwenden Sie kryptografische Technologie mit Standardbibliotheken
Verwenden Sie "Rhino", das JavaScript in Java ausführt
Führen Sie TensorFlow in Java aus. Es ist jedoch einfach. .. .. ..
Deklarieren Sie keine Variablen in List in Java
Wie schreibt man in Scala, die in Java geschrieben wurde? (Liste → Karte)
Partisierung in Java
Probieren Sie Java 8 Stream aus
Änderungen in Java 11
Janken in Java
Java Stream API
Java 8 studieren (Stream)
[Java] Verwenden Sie Collectors.collectingAndThen
Ihnen, denen im Feld "Keine Stream-API verwenden" mitgeteilt wurde
Umfangsrate in Java
Java Stream-Beendigung
[Java] Stream-Verarbeitung
FizzBuzz in Java
Java 9 Optional :: stream
Seien Sie vorsichtig, wenn Sie SHIFT-JIS in Java finden
Benötigen Sie eine speicherbewusste Implementierung von Java?
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 1-Build) (OpenCV-3.4.4)
Mit Tomcat können Sie Platzhalter ($ {...}) in web.xml verwenden.
[Java] Verwendung von final in der lokalen Variablendeklaration
[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder
Was tun, wenn Sie glauben, dass Sie mit IntelliJ IDEA CE nicht Groovy-> Java können?
[Java] Warum verwenden Sie die Benutzeroberfläche (Spring ist ebenfalls verfügbar)?
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Janken App in Java
Einschränkungsprogrammierung in Java
Beispielcode zum Konvertieren von List in List <String> in Java Stream
Setzen Sie Java8 in Centos7
[Java] Stream Collectors Hinweis
Ich möchte so etwas wie "cls" in Java machen
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Verwenden Sie java.time mit Jackson
Kommentare in der Java-Quelle