Java8新特性 Stream的使用 (六)

实体信息:


public class Product {
    private String  goods_status ;
    private String  goods_name ;
    private String  goods_cover ;
    private String  goods_price ;
    private String  goods_id ;
    private String  goods_discount ;
    private String  classify_name ;
    private String  classify_id ;
    private String  classify_status ;

    public Product() {
    }

    public Product(String goods_status, String goods_name, String goods_cover, String goods_price, String goods_id, String goods_discount, String classify_name, String classify_id, String classify_status) {
        this.goods_status = goods_status;
        this.goods_name = goods_name;
        this.goods_cover = goods_cover;
        this.goods_price = goods_price;
        this.goods_id = goods_id;
        this.goods_discount = goods_discount;
        this.classify_name = classify_name;
        this.classify_id = classify_id;
        this.classify_status = classify_status;
    }

    public String getClassify_name() {
        return classify_name;
    }

    public void setClassify_name(String classify_name) {
        this.classify_name = classify_name;
    }

    public String getClassify_id() {
        return classify_id;
    }

    public void setClassify_id(String classify_id) {
        this.classify_id = classify_id;
    }

    public String getClassify_status() {
        return classify_status;
    }

    public void setClassify_status(String classify_status) {
        this.classify_status = classify_status;
    }

    public String getGoods_status() {
        return goods_status;
    }

    public void setGoods_status(String goods_status) {
        this.goods_status = goods_status;
    }

    public String getGoods_name() {
        return goods_name;
    }

    public void setGoods_name(String goods_name) {
        this.goods_name = goods_name;
    }

    public String getGoods_cover() {
        return goods_cover;
    }

    public void setGoods_cover(String goods_cover) {
        this.goods_cover = goods_cover;
    }

    public String getGoods_price() {
        return goods_price;
    }

    public void setGoods_price(String goods_price) {
        this.goods_price = goods_price;
    }

    public String getGoods_id() {
        return goods_id;
    }

    public void setGoods_id(String goods_id) {
        this.goods_id = goods_id;
    }

    public String getGoods_discount() {
        return goods_discount;
    }

    public void setGoods_discount(String goods_discount) {
        this.goods_discount = goods_discount;
    }

    @Override
    public String toString() {
        return "Product{" +
                "goods_status='" + goods_status + '\'' +
                ", goods_name='" + goods_name + '\'' +
                ", goods_cover='" + goods_cover + '\'' +
                ", goods_price='" + goods_price + '\'' +
                ", goods_id='" + goods_id + '\'' +
                ", goods_discount='" + goods_discount + '\'' +
                ", classify_name='" + classify_name + '\'' +
                ", classify_id='" + classify_id + '\'' +
                ", classify_status='" + classify_status + '\'' +
                '}';
    }
}

 

具体的demo,注释都在代码里面

// Stream的使用
/** 其中map 和 flatMap 稍后细讲 **/
public class Lambda3 {
    public static List<Integer> createListByInteger() {
        List<Integer> list = Lists.newArrayList(1, 2, 32, 2, 4, 5, 6, 7, 3, 7, 10, 11, 4);
        return list;
    }

    public static List<String> createListByString() {
        List<String> list = Lists.newArrayList("1", "2", "32", "3", "4", "5", "6", "7", "8", "9", "10", "11", "0");
        return list;
    }

    public static List<String> createListByCharacter() {
        List<String> list = Lists.newArrayList("a", "d", "a", "c", "f", "e", "t", "l");
        return list;
    }

    public static List<Product> createProduct() {
        List<Product> list = new ArrayList<Product>();
        String str = "[\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"鲜淮山炒黑木耳\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":28,\n" +
                "        \"classify_name\":\"每日抢购\",\n" +
                "        \"classify_id\":\"1323454502753538048\",\n" +
                "        \"goods_id\":\"1317807825745088512\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"玉米松子\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":35,\n" +
                "        \"classify_name\":\"每日抢购\",\n" +
                "        \"classify_id\":\"1323454502753538048\",\n" +
                "        \"goods_id\":\"1317807947237298176\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"腊八豆蒸排骨\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":18,\n" +
                "        \"classify_name\":\"每日抢购\",\n" +
                "        \"classify_id\":\"1323454502753538048\",\n" +
                "        \"goods_id\":\"1317807639778037760\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"蒜蓉粉丝蒸娃娃菜\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":28,\n" +
                "        \"classify_name\":\"优先新品\",\n" +
                "        \"classify_id\":\"1323454357907443712\",\n" +
                "        \"goods_id\":\"1317807566960726016\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"湘水肉沫蒸蛋\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":33,\n" +
                "        \"classify_name\":\"优先新品\",\n" +
                "        \"classify_id\":\"1323454357907443712\",\n" +
                "        \"goods_id\":\"1317807434039037952\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"紫苏土豆牛肉碎\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":70,\n" +
                "        \"classify_name\":\"优先新品\",\n" +
                "        \"classify_id\":\"1323454357907443712\",\n" +
                "        \"goods_id\":\"1317807129075388416\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"青豆炒肉泥\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":58,\n" +
                "        \"classify_name\":\"优先新品\",\n" +
                "        \"classify_id\":\"1323454357907443712\",\n" +
                "        \"goods_id\":\"1317806865106866176\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"吮指青尾鱼\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":128,\n" +
                "        \"classify_name\":\"热销商品\",\n" +
                "        \"classify_id\":\"1323454099097915392\",\n" +
                "        \"goods_id\":\"1317805910818820096\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"香爆酱牛肉\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":88,\n" +
                "        \"classify_name\":\"热销商品\",\n" +
                "        \"classify_id\":\"1323454099097915392\",\n" +
                "        \"goods_id\":\"1317805307065536512\",\n" +
                "        \"goods_discount\":0\n" +
                "    },\n" +
                "    {\n" +
                "        \"goods_status\":\"正常\",\n" +
                "        \"goods_name\":\"清远鸡\",\n" +
                "        \"goods_cover\":\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1405304736,1966318522&fm=26&gp=0.jpg\",\n" +
                "        \"classify_status\":\"正常\",\n" +
                "        \"goods_price\":98,\n" +
                "        \"classify_name\":\"热销商品\",\n" +
                "        \"classify_id\":\"1323454099097915392\",\n" +
                "        \"goods_id\":\"1317804058198937600\",\n" +
                "        \"goods_discount\":0\n" +
                "    }\n" +
                "]";

        JSONArray productArray = JSONArray.parseArray(str);
        for (int i = 0; i < productArray.size(); i++) {
            Product product = new Product();
            JSONObject productJson = productArray.getJSONObject(i);
            product = JSON.parseObject(productJson.toJSONString(), Product.class);

            list.add(product);
        }
        return list;
    }

    public static void stream() {
        List<Integer> list = createListByInteger();

        // forEarch 遍历
        list.parallelStream().forEach(item -> {
            System.out.println(item);
        });

        System.out.println("###########################################");

        list.parallelStream().forEach(System.out::println);

        System.out.println("*******************************************");

        // collect 将流转换成其他的形式  常用的List,Set、Map、Collection

        // 转为 set
        Set<Integer> set = list.parallelStream().collect(Collectors.toSet());
        System.out.println("set:\t" + set);

        System.out.println("###########################################");

        // 转为 map
        Map<Integer, Integer> map = list.parallelStream().collect(Collectors.toMap(item -> item, item -> item, (k1, k2) -> k1));
        System.out.println("map:\t" + map);

        System.out.println("*******************************************");

        // 过滤操作 filter
        List<Integer> list1 = list.stream().filter(item -> item % 2 == 0).collect(Collectors.toList());
        System.out.println(list1);

        System.out.println("*******************************************");

        // 去重 distinct
        List<Integer> list2 = list.stream().distinct().collect(Collectors.toList());
        System.out.println(list2);

        System.out.println("*******************************************");

        // 取出前几个元素  limit
        List<Integer> list3 = list.stream().limit(5).collect(Collectors.toList());
        System.out.println(list3);

        System.out.println("*******************************************");

        // 跳过前几个元素
        List<Integer> list4 = list.stream().skip(5).collect(Collectors.toList());
        System.out.println(list4);

        System.out.println("*******************************************");

        // 排序 sorted
        // 自然排序
        List<Integer> list5 = list.stream().sorted().collect(Collectors.toList());
        System.out.println(list5);

        System.out.println("###########################################");

        // 倒序
        List<Integer> list6 = list.stream().sorted((a1, a2) -> a2.compareTo(a1)).collect(Collectors.toList());
        System.out.println(list6);

        System.out.println("*******************************************");

        // 统计 count / max / min
        Long count = list.stream().count();
        Double max = list.stream().max((a1, a2) -> a1.compareTo(a2)).get().doubleValue();
        Double min = list.stream().min((a1, a2) -> a1.compareTo(a2)).get().doubleValue();
        System.out.println("count ======>" + count);
        System.out.println("max ======>" + max);
        System.out.println("min ======>" + min);

        System.out.println("*******************************************");

        // 终止操作
        // anyMatch()   检查是否有至少一个能够满足条件
        Boolean flag = list.parallelStream().anyMatch(item -> item > 3);
        System.out.println(flag);

        System.out.println("*******************************************");

        // allMatch() 所有条件都满足
        Boolean flag1 = list.parallelStream().allMatch(item -> item > 3);
        System.out.println(flag1);

        System.out.println("*******************************************");

        // 没有条件满足
        Boolean flag2 = list.parallelStream().noneMatch(item -> item > 3);
        System.out.println(flag2);

        System.out.println("*******************************************");

        // 返回第一个  findFirst
        Optional<Integer> optional = list.parallelStream().findFirst();
        System.out.println(optional);

        System.out.println("*******************************************");

        // 返回任意一个  findAny()
        Optional<Integer> optional1 = list.parallelStream().findAny();
        System.out.println(optional1);

        // 中间操作 map() 将流中的元素映射到另一个流中
        List<Product> productList = createProduct();
        // 让list转为map
        // 原始的方式
        Map<String, Product> map1 = new HashMap<String, Product>();

        for (int i = 0; i < productList.size(); i++) {
            String goods_id = productList.get(i).getGoods_id();
            map1.put(goods_id, productList.get(i));
        }
        System.out.println(map1);

        System.out.println("###########################################");

        // lambda 表达式的方式
        Map<String, Product> map2 = productList.stream().map(item -> item).collect(Collectors.toMap(item -> item.getGoods_id(), item -> item, (k1, k2) -> k1));
        System.out.println(map2);

        /** 其中map 和 flatMap 稍后细讲 **/


    }

    public static void main(String[] args) {
        stream();
    }

欢迎关注我的微信公众号,更多内容将在微信公众号中发布:

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值