Es ist noch nicht zu spät? Beispiel für die Verwendung aller Methoden der Java Stream-API (Zwischenoperation)

Start

Stream API wurde von Java8 aus gestartet, aber wann und was verwendet werden soll Gelegentlich? Als Memorandum werde ich mich diesmal auf die "Zwischenverarbeitung" konzentrieren. Daher werde ich detaillierte Erklärungen weglassen und immer mehr Beispielcode veröffentlichen.

** (Obwohl es wie alle Methoden geschrieben ist, werden einige weggelassen. Es tut mir leid) **

Dieses Mal wird nur das Verwendungsbeispiel eines Streams mit ArrayList angezeigt.

Technische Elemente

Vorteile der Verwendung der Stream-API

Vorherige Kenntniss

Vorbereitungen

Book.java


class Book {
    private Integer id;         //ID speichern
    private String title;       //Buchtitel
    private String author;      //Autor
    private Integer age;        //Zielalter

    Book(Integer id, String title, String author, Integer age) {
        this.id = id;
        this.title = title;
        this.author = author;
        this.age = age;
    }

    public Integer getId() { return id; }
    public String getTitle() { return title; }
    public String getAuthor() { return author; }
    public Integer getAge() { return age; }

    @Override
    public String toString() {
        return "[id: " + getId() + ", title: " + getTitle() + ", author: " + getAuthor() + ", age: " + getAge() + "]";
    }
}

Main.java


public class Main {
    public static void main(String[] args) {
        List<Book> bookList = Arrays.asList(
                  new Book(1, "book1", "author1", 20)
                , new Book(2, "book2", "author2", 12)
                , new Book(3, "book3", "author3", 6));


//Beschreiben Sie hier die unten verwendete Verarbeitung.

Einführung jeder Methode

Filter - Filter nach Bedingung

Main.java


bookList.stream()
        .filter(e -> e.getAge() == 12)  //Alter=Nur 12 extrahieren
        .forEach(System.out::println);

//Erwartete Ergebnisse
[id: 2, title: book2, author: author2, age: 12]

map - Leistungsverarbeitung wie Typkonvertierung (1: 1-Konvertierung)

Main.java


bookList.stream()
        // [Titel:Autor]In die Form von konvertieren
        .map(e -> "[" + e.getTitle() + " : " + e.getAuthor() + "]")
        .forEach(System.out::print);

//Erwartete Ergebnisse
[book1 : author1][book2 : author2][book3 : author3]

Führt eine Verarbeitung wie die Konvertierung vom Typ flatMap durch (1: N-Konvertierung, N ist eine natürliche Zahl)

Main.java


bookList.stream()
        .flatMap(e -> Stream.of(e.getId(), e.getTitle())) //ID und Titel extrahieren
        .forEach(System.out::println);

//Erwartete Ergebnisse
1
book1
2
book2
3
book3

deutlich - Duplikate entfernen

Main.java


List<Integer> distinctList = Arrays.asList(1, 1, 2, 2, 2, 3, 4, 4, 5, 4, 6);

distinctList.stream()
            .distinct() //Doppelte Entfernung
            .forEach(System.out::println);

//Erwartete Ergebnisse
1
2
3
4
5
6

sortiert - Sortieren (Sie können anders sortieren, indem Sie sortiert ein Argument hinzufügen)

Main.java


List<Integer> sortList = Arrays.asList(4, 2, 5, 10, 1);

sortList.stream()
        .sorted()      //In natürlicher Reihenfolge sortieren
        .forEach(System.out::println);

//Erwartete Ergebnisse
1
2
4
5
10

peek - Zwischenverarbeitung, die den Stream nicht ändert.

Main.java


bookList.stream()
        .peek(System.out::println) //Abmelden usw.
        .filter(e -> e.getAge() < 16)
        .forEach(System.out::println);

//Erwartete Ergebnisse
[id: 1, title: book1, author: author1, age: 20] // peek()Ausgabe von
[id: 2, title: book2, author: author2, age: 12] // peek()Ausgabe von
[id: 2, title: book2, author: author2, age: 12]
[id: 3, title: book3, author: author3, age: 6]  // peek()Ausgabe von
[id: 3, title: book3, author: author3, age: 6]

limit-Anzeige bis zu (Argument-) Elementen.

Main.java


bookList.stream()
        .limit(2)   //Drücken Sie auf zwei
        .forEach(System.out::println);

//Erwartete Ergebnisse
[id: 1, title: book1, author: author1, age: 20]
[id: 2, title: book2, author: author2, age: 12]

Überspringen Sie die Elemente (Argument) und zeigen Sie den Rest an.

Main.java



bookList.stream()
        .skip(1)   //Überspringe eins
        .forEach(System.out::println);

//Erwartete Ergebnisse
[id: 2, title: book2, author: author2, age: 12]
[id: 3, title: book3, author: author3, age: 6]

Zusammenfassung

Recommended Posts

Es ist noch nicht zu spät? Beispiel für die Verwendung aller Methoden der Java Stream-API (Zwischenoperation)
[Java] Stream API Zwischenoperation
[Java] Stream API - Stream Zwischenverarbeitung
Java Stream API