package com.example.demo.test01;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class StreamTest {
public static void main(String[] args) {
System.out.println("---------->存储的图书信息: ");
System.out.println(JSON.toJSON(initInfo()));
System.out.println();
System.out.println("---------->测试map方法:");
testMap();
System.out.println();
System.out.println("---------->测试flatMap方法:");
testFlatMap();
System.out.println();
}
private static void testMap() {
List<List<Book>> listList = initInfo().stream()
.map(Library::getBook)
.collect(Collectors.toList());
System.out.println(JSON.toJSON(listList));
}
private static void testFlatMap() {
List<Book> listList = initInfo().stream()
.flatMap(library -> library.getBook().stream())
.collect(Collectors.toList());
System.out.println(JSON.toJSON(listList));
}
public static List<Library> initInfo() {
Library library1 = new Library("新华图书", null);
Library library2 = new Library("大家图书", null);
Library library3 = new Library("瀚海图书", null);
Book book1 = new Book("西游记", "吴承恩", 49);
Book book2 = new Book("水浒传", "施耐庵", 57);
Book book3 = new Book("三国演义", "罗贯中", 52);
Book book4 = new Book("朝花夕拾", "鲁迅", 30);
List<Book> library1Book = new ArrayList<>();
Collections.addAll(library1Book, book1, book2);
library1.setBook(library1Book);
List<Book> library2Book = new ArrayList<>();
Collections.addAll(library2Book, book2, book3);
library2.setBook(library2Book);
List<Book> library3Book = new ArrayList<>();
Collections.addAll(library3Book, book3, book4);
library3.setBook(library3Book);
return new ArrayList<>(Arrays.asList(library1, library2, library3));
}
}
@Data
class Library {
private String name;
private List<Book> book;
public Library(String name, List<Book> book) {
this.name = name;
this.book = book;
}
}
@Data
class Book {
private String name;
private String author;
private Integer price;
public Book(String name, String author, Integer price) {
this.name = name;
this.author = author;
this.price = price;
}
}