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.
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.
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]
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]
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
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
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
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]
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]
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]