Java Stream Ein Memorandum von Zwischen- / Beendigungsoperationen, die wirklich häufig verwendet werden 1

Im vorherigen Beitrag habe ich die Grundlagen von Stream geschrieben, den Ablauf der Zwischenoperation → Beendigungsoperation. Es fühlt sich wie ein Memorandum an, aber ich werde diejenigen aufschreiben, die ich bisher verwendet habe, sowie die Zwischen- und Beendigungsoperationen, die anscheinend häufig verwendet werden.

Zunächst von map () und Collectors.toList (), die meiner Meinung nach am häufigsten verwendet werden. Angenommen, Sie haben eine Liste von Staff-Klassen mit Name, ID usw.


public class Staff {

    private String name;
    private Long id;
    private int age;
・
・
・
//getter/Setter etc.
・
・

Wenn Sie eine Liste wünschen, die aus Verarbeitungsgründen nur IDs extrahiert, vorausgesetzt, die IDs sind Seriennummern von 1 (keine Duplizierung) Es kann mit map () und Collectors.toList () wie folgt extrahiert werden.

    //staffList hat 6 Elemente
 
        List<Long> idList = staffList.stream().map(staff -> staff.getId()).collect(Collectors.toList());
        idList.stream().forEach((id) -> {
            System.out.println(id.toString());
        });

Ausgabeergebnis

1
2
3
4
5
6
7
8
9
10
11
12

Die oben durchgeführte Verarbeitung ist map(staff -> staff.getId()) Im Teil von wird staff, ein Element, das aus staffList extrahiert wurde, in staff.getId () konvertiert. danach, collect(Collectors.toList()) Listen Sie die Gruppe staff.getId () auf, die aus dem Stab aller Elemente in extrahiert wurde. Als Ergebnis wurde eine Liste mit nur extrahierten IDs erhalten. (Wir haben 12 Mitarbeiter, die IntStream verwenden, aber ich werde IntStream eines Tages erklären ... Ich werde diesmal nur den Code veröffentlichen.)

//12 Mitarbeiter von IntStream vorbereitet, wenn auch nur 1 Mio. irgendwo hilfreich sind
List<Staff> staffList = IntStream.rangeClosed(1, 12).boxed()
				.map(i -> new Staff(String.valueOf(i) + "Du", Long.valueOf(i), i)).collect(Collectors.toList());

Die hier verwendete Karte (Konvertierung) kann an verschiedenen Orten verwendet werden. Vergessen Sie sie also nicht.

Das nächste, was am häufigsten herauszukommen scheint, ist Filter. Karte war eine Konvertierung, aber Filter ist eine Suche. Hier wird die ID angegeben und der Name des Personals angefordert. Für den Namen jedes Mitarbeiters habe ich die ID-Nummer eingegeben, die Sie hinzugefügt haben.

//Argument searchID= 1L
        Staff target = staffList.stream().filter(staff -> staff.getId() == searchID).findFirst().orElse(null);
        System.out.println(target.getName());

Ausgabeergebnis

1 du

filter(staff -> staff.getId() == searchID) Geben Sie die Bedingungen an, die mit der obigen Filtermethode herausgedrückt werden sollen.

findFirst().orElse(null) Zuerst wird der Stab erfasst, der dem Filter entspricht, und wenn er nicht gefunden wird, wird null zurückgegeben.

Es gibt viele andere Dinge, die ich oft benutze, also werde ich Zeit finden, sie hinzuzufügen.

Recommended Posts

Java Stream Ein Memorandum von Zwischen- / Beendigungsoperationen, die wirklich häufig verwendet werden 1
Eine kurze Zusammenfassung der Java 8-Datums- / Uhrzeit-APIs, die wahrscheinlich häufig verwendet werden
RSpec-Sammlung, die ich häufig verwendet habe
Java Stream-Beendigung
[Java] Beim Schreiben der Quelle ... Memorandum ①
Eine Sammlung von Befehlen, die häufig in Heroku verwendet werden