高效 告別996,開啓java高效編程之門 3-7實戰:經常使用中間操做演示之:過濾/映射/扁平化 filter/map/flagMap

1    重點

filter方法的使用java

map方法的使用編程

flatMap方法的使用json

forEach方法的使用函數

 

2    map和flatMap的區別:

map的做用很容易理解就是對rdd之中的元素進行逐一進行函數操做映射爲另一個rdd。spa

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)));
    }

 

}

 

 

打印日誌:code

{
    "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    實戰演示之扁平化(filterMap):
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)));
    }

}

 

打印日誌:blog

"無"
"人"
"機"
"T"
"-"
"s"
"h"
"i"
"r"
"t"
"人"
"生"
"的"
"枷"
"鎖"
"老"
"人"
"與"
"海"
"劍"
"指"
"高"
"效"
"編"
"程"
"大"
"頭"
"皮"
"鞋"
"槓"
"鈴"
"T"
"h"
"i"
"n"
"k"
"P"
"a"
"d"

Process finished with exit code 0
相關文章
相關標籤/搜索