• 高效 告别996,开启java高效编程之门 3-7实战:常用中间操作演示之:过滤/映射/扁平化 filter/map/flatMap


    1    重点

    filter方法的使用

    map方法的使用

    flatMap方法的使用

    forEach方法的使用

    2    map和flatMap的区别:

    map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。

    flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词,可用来单词计数

    3    实战演示之过滤(filter):
    package com.imooc.zhangxiaoxi.stream;
    
    import com.alibaba.fastjson.JSONObject;
    import com.imooc.zhangxiaoxi.lambda.cart.CartService;
    import com.imooc.zhangxiaoxi.lambda.cart.Sku;
    import com.imooc.zhangxiaoxi.lambda.cart.SkuCategoryEnum;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * StreamOperator
     * 作用:演示各种流的操作
     * @author 魏豆豆
     * @date 2020/4/11
     */
    public class StreamOperator {
    
        private List<Sku> list;
        /**
         * 初始化购物车车
         */
        @Before
        public void init(){
            list = CartService.getSkuList();
        }
    
    
        /**
         * filter的方法使用
         *
         * 过滤出只有书籍的商品并进行打印
         */
        @Test
        public void filterTest(){
            list.stream()
                    //filter方法:如果条件为true则保留,否则过滤掉
                    .filter(sku -> sku.getSkuCategory().equals(SkuCategoryEnum.BOOKS))
                    //item(可以是其他变量):为该流的每个元素执行一个操作
                    .forEach(item->System.out.println(JSONObject.toJSONString(item,true)));
        }
    
     
    
    }

    打印日志:

    {
        "skuCategory":"BOOKS",
        "skuId":2020003,
        "skuName":"人生的枷锁",
        "skuPrice":30.0,
        "totalNum":1,
        "totalPrice":30.0
    }
    {
        "skuCategory":"BOOKS",
        "skuId":2020004,
        "skuName":"老人与海",
        "skuPrice":20.0,
        "totalNum":1,
        "totalPrice":20.0
    }
    {
        "skuCategory":"BOOKS",
        "skuId":2020005,
        "skuName":"剑指高效编程",
        "skuPrice":288.0,
        "totalNum":1,
        "totalPrice":288.0
    }
    
    Process finished with exit code 0
    4    实战演示之映射(map):
    package com.imooc.zhangxiaoxi.stream;
    
    import com.alibaba.fastjson.JSONObject;
    import com.imooc.zhangxiaoxi.lambda.cart.CartService;
    import com.imooc.zhangxiaoxi.lambda.cart.Sku;
    import com.imooc.zhangxiaoxi.lambda.cart.SkuCategoryEnum;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * StreamOperator
     * 作用:演示各种流的操作
     * @author 魏豆豆
     * @date 2020/4/11
     */
    public class StreamOperator {
    
        private List<Sku> list;
        /**
         * 初始化购物车车
         */
        @Before
        public void init(){
            list = CartService.getSkuList();
        }
    /**
         * map方法的使用
         *
         * 找出购物车中所有商品的名称并进行打印
         */
        @Test
        public void mapTest(){
            list.stream()
                    .map(sku -> sku.getSkuName())
                    .forEach(item->System.out.println(JSONObject.toJSONString(item,true)));
        }
    
    }

    打印日志:

    "无人机"
    "T-shirt"
    "人生的枷锁"
    "老人与海"
    "剑指高效编程"
    "大头皮鞋"
    "杠铃"
    "ThinkPad"
    
    Process finished with exit code 0

     

    5    实战演示之扁平化(flatMap):
    package com.imooc.zhangxiaoxi.stream;
    
    import com.alibaba.fastjson.JSONObject;
    import com.imooc.zhangxiaoxi.lambda.cart.CartService;
    import com.imooc.zhangxiaoxi.lambda.cart.Sku;
    import com.imooc.zhangxiaoxi.lambda.cart.SkuCategoryEnum;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * StreamOperator
     * 作用:演示各种流的操作
     * @author 魏豆豆
     * @date 2020/4/11
     */
    public class StreamOperator {
    
        private List<Sku> list;
        /**
         * 初始化购物车车
         */
        @Before
        public void init(){
            list = CartService.getSkuList();
        }
    
    
        /**
         * filter的方法使用
         *
         * 过滤出只有书籍的商品并进行打印
         */
        @Test
        public void filterTest(){
            list.stream()
                    //filter方法:如果条件为true则保留,否则过滤掉
                    .filter(sku -> sku.getSkuCategory().equals(SkuCategoryEnum.BOOKS))
                    //item(可以是其他变量):为该流的每个元素执行一个操作
                    .forEach(item->System.out.println(JSONObject.toJSONString(item,true)));
        }
    
        /**
         * map方法的使用
         *
         * 找出购物车中所有商品的名称并进行打印
         */
        @Test
        public void mapTest(){
            list.stream()
                    .map(sku -> sku.getSkuName())
                    .forEach(item->System.out.println(JSONObject.toJSONString(item,true)));
        }
    
        /**
         * flatMap方法的使用:将一个对象转换成一个流
         *
         * 找出购物车所有的商品名称并进行打印
         */
        @Test
        public void flatMap(){
            list.stream()
                    //注意:flatMap是对源处理为Stream流之后才能继续操作
                    .flatMap(sku -> Arrays.stream(sku.getSkuName().split("")))
                    .forEach(item->System.out.println(JSONObject.toJSONString(item,true)));
        }
    
    }

    打印日志:

    "无"
    "人"
    "机"
    "T"
    "-"
    "s"
    "h"
    "i"
    "r"
    "t"
    "人"
    "生"
    "的"
    "枷"
    "锁"
    "老"
    "人"
    "与"
    "海"
    "剑"
    "指"
    "高"
    "效"
    "编"
    "程"
    "大"
    "头"
    "皮"
    "鞋"
    "杠"
    "铃"
    "T"
    "h"
    "i"
    "n"
    "k"
    "P"
    "a"
    "d"
    
    Process finished with exit code 0
  • 相关阅读:
    php基本语法之逻辑运算符
    HTML5实现端访问时禁止放大和缩小网页
    javascript simple MVC
    GIS开发离线地图应用-初识gis
    百度应用开发--日期大写转换
    ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录
    ThinkPHP与EasyUI整合之二(datagrid):删除多条记录
    面向对象----类和对象
    Java 基本语法----数组
    Java 基本语法----流程控制
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/12678718.html
Copyright © 2020-2023  润新知