Java 8 flatMap示例大全

书欣 Java经验 发布时间:2023-01-28 14:37:33 阅读数:14745 1
下文笔者将讲述flatMap中使用方法说明,如下所示

flatMap功能说明

将输入的每一行数据都转换为一个新的数据结构
元素平铺,压平切分
如:
flatMap()可完成以下功能
{ {1,2}, {3,4}, {5,6} } -> flatMap -> {1,2,3,4,5,6}
{ {'a','b'}, {'c','d'}, {'e','f'} } -> flatMap -> {'a','b','c','d','e','f'}

filter不知道如何过滤String[]流

TestExample1.java
package com.java265.java8;
import java.util.Arrays;
import java.util.stream.Stream;
public class TestExample1 {
    public static void main(String[] args) {
        String[][] data = new String[][]{{"a", "b"}, {"c", "d"}, {"e", "f"}};
 
        //Stream<String[]>
        Stream<String[]> temp = Arrays.stream(data);
 
        //filter a stream of string[], and return a string[]?
        Stream<String[]> stream = temp.filter(x -> "a".equals(x.toString()));
 
        stream.forEach(System.out::println);
    }
}

//以上代码,将输出空信息

使用flatMap将Stream<String[]>转换为Stream<String>

TestExample1.java
package com.java265.java8;
import java.util.Arrays;
import java.util.stream.Stream;
public class TestExample1 {
    public static void main(String[] args) {
        String[][] data = new String[][]{{"a", "b"}, {"c", "d"}, {"e", "f"}};
 
        //Stream<String[]>
        Stream<String[]> temp = Arrays.stream(data);
 
        //Stream<String>, GOOD!
        Stream<String> stringStream = temp.flatMap(x -> Arrays.stream(x));
 
        Stream<String> stream = stringStream.filter(x -> "a".equals(x.toString()));
 
        stream.forEach(System.out::println);
 
		/*Stream<String> stream = Arrays.stream(data)
                .flatMap(x -> Arrays.stream(x))
                .filter(x -> "a".equals(x.toString()));*/
    }
 
}
-----运行以上代码,将输出以下信息----
a

流+设置+ flatMap

Student.java
package com.java265.java8;
 
import java.util.HashSet;
import java.util.Set;
 
public class Student {
 
    private String name;
    private Set<String> book;
 
    public void addBook(String book) {
        if (this.book == null) {
            this.book = new HashSet<>();
        }
        this.book.add(book);
    }
    //getters and setters
 
}

flatMap()和Set

TestExample2.java
package com.java265.java8;
 
import java.util.Arraylist;
import java.util.List;
import java.util.stream.Collectors;
 
public class TestExample2 {
 
    public static void main(String[] args) {
 
        Student obj1 = new Student();
        obj1.setName("java265");
        obj1.addBook("Java 8 in Action");
        obj1.addBook("Spring Boot in Action");
        obj1.addBook("Effective Java (2nd Edition)");
 
        Student obj2 = new Student();
        obj2.setName("adeal");
        obj2.addBook("Learning Python, 5th Edition");
        obj2.addBook("Effective Java (2nd Edition)");
 
        List<Student> list = new ArrayList<>();
        list.add(obj1);
        list.add(obj2);
 
        List<String> collect =
                list.stream()
                        .map(x -> x.getBook())      //Stream<Set<String>>
                        .flatMap(x -> x.stream())   //Stream<String>
                        .distinct()
                        .collect(Collectors.toList());
 
        collect.forEach(x -> System.out.println(x));
    }
}

-----运行以上代码,将输出以下信息---
Spring Boot in Action
Effective Java (2nd Edition)
Java 8 in Action
Learning Python, 5th Edition

Stream + Primitive + flatMapToInt

TestExample3.java
package com.java265.java8;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class TestExample3 {
    public static void main(String[] args) {
        int[] intArray = {22,33,11,119,230};
 
        //1. Stream<int[]>
        Stream<int[]> streamArray = Stream.of(intArray);
 
        //2. Stream<int[]> -> flatMap -> IntStream
        IntStream intStream = streamArray.flatMapToInt(x -> Arrays.stream(x));
        intStream.forEach(x -> System.out.println(x));
    } 
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202301/16748878875550.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者