JAVA8stream嵌套循环并设置值

本文介绍如何在Java 8中使用Stream进行嵌套循环并设置值。Java 8的Stream API提供了一种声明式处理数据的方式,它不存储数据且不改变源数据。文中将通过测试代码来阐述这一特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA8stream嵌套循环并设置值

简介:
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。
Stream 不存储数据、不改变源数据
详情请阅读stream官网

一.测试代码

    public static void main(String[] args)throws Exception {
        List<IG> igs1 = Arrays.asList(new IG(11),
                                      new IG(12));

        List<IG> igs2 = Arrays.asList(new IG(11),
                                      new IG(13));
        List<IG> igs3 = Arrays.asList(new IG(11),
                                      new IG(13),
                                      new IG(13));

        //找出skuId相同的对象组成集合
        List<IG> gs1 =  igs2.stream().filter(a1 -> igs1.stream().anyMatch(a2 ->a1.getSkuId() == a2.getSkuId())
        ).collect(Collectors.toList());
        //打印输出 tSnipingGoodSkus1{11}
        gs1.stream().map(IG::getSkuId).forEach(System.out::println);

        //对skuId相同的对象属性进行操作
        List<IG> gs2 = igs2.parallelStream().map(a1 ->{//parallelStream :多线程异步stream
            IG tSnipingGoodSku =  igs1.stream().filter(a2 -> a1.getSkuId() == a2.getSkuId()).findFirst().orElse(null); //orElse 值为空返回null防止空指针异常
            if (null != tSnipingGoodSku){
                a1.setSkuId(666);
            }
            return a1;
        }).collect(Collectors.toList());
        //打印输出 tSnipingGoodSkus2{666,13}
        gs2.stream().map(IG::getSkuId).forEach(System.out::println);

        //sorted()方法: 有参从低到高排序(升序),无参从高到底排序(降序)
        List<IG> sortedEmp = igs3.stream().sorted(Comparator.comparing(IG::getSkuId)).collect(Collectors.toList());
        //输出11 13 13
        sortedEmp.stream().map(IG::getSkuId).forEach(System.out::println);
    }


    public static class IG {

        private Integer skuId;

        public Integer getSkuId() {
            return skuId;
        }

        public void setSkuId(Integer skuId) {
            this.skuId = skuId;
        }

        public IG(Integer skuId) {
            this.skuId = skuId;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值