2021-07-01

该博客介绍了如何使用Java8的Stream API进行列表嵌套操作,包括查找相同元素、更新对象属性以及进行排序。示例中展示了如何通过stream的filter、anyMatch、map和collect等方法实现数据处理,并使用parallelStream进行并行处理以提高效率。此外,还演示了sorted方法用于对列表进行排序。
摘要由CSDN通过智能技术生成

JAVA8stream 多个list嵌套循环并从新设置值

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、付费专栏及课程。

余额充值