高效 告别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
原文地址:https://www.cnblogs.com/1446358788-qq/p/12678718.html