总结:在平时࿰中

发布时间:2025-06-24 19:53:51  作者:北方职教升学中心  阅读量:028


二、代码演示。

总结:

在平时࿰中,

③ 测试结果

我们可以看到使用 flatMap 方法后,流中的数据被展平,List被消除了<Book>层级解构,但是 map 层次结构仍然存在于数据中。本质相同�都是 map 操作,但不同之处在于󿀌flatMap 操作会比 map 多一个 flat 操作。

例:

① 使用 flatMap:[a,b,c,d,[e,f [g,h,i]]] 转换为 [a,b,c,d,e,f,g,h,i]。有层次结构,返回的流量是List<Book>由流࿰组成c;而 flatMap List在中间被消除<Book>层次结构,返回的流是 Book 组成的流。

③ 测试结果。而 map 方法的返回是:回流由将给定函数应用于此流元素的结果组成。

 flatMap 方法流的中间过程。我们需要展示具有层次结构的数据c;即将多层数据转换为单层数据操作时,我们能用 flatMap 方法。

③ 使用 map: [a,b,c] 转换为 [A,B,C]。 。

public class StreamTest {    public static void main(String[] args) {        System.out.println("---------->存储的图书信息: ");        System.out.println(initInfo());        System.out.println("---------->测试map方法:");        testMap();        System.out.println("---------->flatmap测试方法");        testFlatMap();    }    private static void testMap() {        initInfo().stream()                .map(library -> library.getBook())                .forEach(book -> System.out.println(book));    }    private static void testFlatMap() {        initInfo().stream()                .flatMap(library -> library.getBook().stream())                .forEach(book -> System.out.println(book));    }    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<>();        List<Book> library2Book = new ArrayList<>();        List<Book> library3Book = new ArrayList<>();        library1Book.add(book1);        library1Book.add(book2);        library2Book.add(book2);        library2Book.add(book3);        library3Book.add(book3);        library3Book.add(book4);        library1.setBook(library1Book);        library2.setBook(library2Book);        library3.setBook(library3Book);        return new ArrayList<>(Arrays.asList(library1,
@Data@NoArgsConstructor@AllArgsConstructor@EqualsAndHashCodepublic class Library {    private String name;    private List<Book> book;}。而 map 方法的返回是:回流由将给定函数应用于此流元素的结果组成。

map 方法流的中间过程。

可以清楚地看到,map 应用方法后,

一、可能还是有点不清楚,我们用代码演示一下。

@Data@NoArgsConstructor@AllArgsConstructor@EqualsAndHashCodepublic class Book {    private String name;    private String author;    private Integer price;}。 library2,

② 测试类。

① map方法。如果我们只是在对流中计算或转换数据时,可以使用 map 方法。 library3); }}。map 和 flatMap 相应的源代码。

<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);

你可以看到�不论是 map 还是 flatMap 方法,以流形式处理数据,返回值也是流形数据的泛型。

"flat"单词的意思是平的,③ 使用 map: [a,b,c] 转换为 [A,B,C]。

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

② flatmap方法。

① 两类,一个 Library 类,一个 Book 类。

说到这里,平的意思,在源代码中,我们对于 flatMap 方法中 API Note 有这样一句话:"The flatMap() operation has the effect of applying a one-to-many transformation to the elements of the stream, and then flattening the resulting elements into a new stream.",意思是:flatMap()操作效果是对流元素应用一对多转换,然后将生成的元素展平为新的流动。

② 使用 map: [1,2,3,4,5,6] 转换为 [11,12,13,14,15,16]。