zoukankan      html  css  js  c++  java
  • java8 map flatmap

    map: 对于Stream中包含的元素使用给定的转换函数进行转换操作,新生成的Stream只包含转换生成的元素。这个方法有三个对于原始类型的变种方法,分别是:mapToInt,mapToLong和mapToDouble。这三个方法也比较好理解,比如mapToInt就是把原始Stream转换成一个新的Stream,这个新生成的Stream中的元素都是int类型。之所以会有这样三个变种方法,可以免除自动装箱/拆箱的额外消耗;

    map方法示意图:

    flatMap:和map类似,不同的是其每个元素转换得到的是Stream对象,会把子Stream中的元素压缩到父集合中;

    flatMap方法示意图:

    原文地址

    http://www.java67.com/2016/03/how-to-use-flatmap-in-java-8-stream.html

    一句话

    把几个小的list转换到一个大的list。

    一张图

     
    flatMap操作

    一段代码

    package test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * Java Program to demonstrate how to use the flatMap() function in Java 8.
     * The flatMap() function is used to convert a Stream of list of values to
     * just a Stream of values. This is also called flattening of stream.
     *
     * @author Javin Paul
     */
    public class Test {
    
        public static void main(String args[]) {
    
            List<String> teamIndia = Arrays.asList("Virat", "Dhoni", "Jadeja");
            List<String> teamAustralia = Arrays.asList("Warner", "Watson", "Smith");
            List<String> teamEngland = Arrays.asList("Alex", "Bell", "Broad");
            List<String> teamNewZeland = Arrays.asList("Kane", "Nathan", "Vettori");
            List<String> teamSouthAfrica = Arrays.asList("AB", "Amla", "Faf");
            List<String> teamWestIndies = Arrays.asList("Sammy", "Gayle", "Narine");
            List<String> teamSriLanka = Arrays.asList("Mahela", "Sanga", "Dilshan");
            List<String> teamPakistan = Arrays.asList("Misbah", "Afridi", "Shehzad");
            
            List<List<String>> playersInWorldCup2016 = new ArrayList<>();
            playersInWorldCup2016.add(teamIndia);
            playersInWorldCup2016.add(teamAustralia);
            playersInWorldCup2016.add(teamEngland);
            playersInWorldCup2016.add(teamNewZeland);
            playersInWorldCup2016.add(teamSouthAfrica);
            playersInWorldCup2016.add(teamWestIndies);
            playersInWorldCup2016.add(teamSriLanka);
            playersInWorldCup2016.add(teamPakistan);
            
            // Let's print all players before Java 8
            List<String> listOfAllPlayers = new ArrayList<>();
            
            for(List<String> team : playersInWorldCup2016){
                for(String name : team){
                    listOfAllPlayers.add(name);
                }
            }
            
            System.out.println("Players playing in world cup 2016");
            System.out.println(listOfAllPlayers);
            
            
            // Now let's do this in Java 8 using FlatMap
            List<String> flatMapList = playersInWorldCup2016.stream()
                                                            .flatMap(pList -> pList.stream())
                                                            .collect(Collectors.toList());
            
            System.out.println("List of all Players using Java 8");
            System.out.println(flatMapList);
        }
    
    }
    
    Output
    run:
    Players playing in world cup 2016
    [Virat, Dhoni, Jadeja, Warner, Watson, Smith, Alex, Bell, Broad, Kane, Nathan, Vettori, AB, Amla, Faf, Sammy, Gayle, Narine, Mahela, Sanga, Dilshan, Misbah, Afridi, Shehzad]
    List of all Players using Java 8
    [Virat, Dhoni, Jadeja, Warner, Watson, Smith, Alex, Bell, Broad, Kane, Nathan, Vettori, AB, Amla, Faf, Sammy, Gayle, Narine, Mahela, Sanga, Dilshan, Misbah, Afridi, Shehzad]
    BUILD SUCCESSFUL (total time: 0 seconds)
    
  • 相关阅读:
    python获取指定日期和转换的整理
    调用baidu地图API,实现语音导航播报
    Quartus 调试笔记
    mybatis-plus学习遇到的坑
    X509Certificate
    Hyperledger Fabric学习笔记——Wallet
    [WCF权限控制]从两个重要的概念谈起:Identity与Principal
    9-HyperLedger-Fabric原理-MSP详解(一)-MSP基础
    区块链中的“双花”问题
    区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
  • 原文地址:https://www.cnblogs.com/diegodu/p/8794857.html
Copyright © 2011-2022 走看看