Java8新特性stream()一些常见用法

Java8新特性stream()一些常见用法

对象数组转字段数组

把一个对象集合转成对象中某个字段的集合:

            List<Coupon> couponList = 查询出来的集合
            List<Long> couponIds = couponList.stream().map(Coupon::getCouponId).collect(Collectors.toList());
  1. 获取集合中的couponId的集合;
  2. Coupon为对象,couponId为想要获得的对象字段;
  3. 返回对象List泛型为字段属性的类型。

将一个对象数组转另一个对象数组

将一个对象数组集合转另一个对象数组集合,常用于DTO转换:

            List<Coupon> couponList = 查询出来的集合
            List<CouponDto> CouponDtos = couponList.stream().map(config -> Convert.convert(CouponDto.class, config)).collect(Collectors.toList());
  1. 将Coupon对象数组转为CouponDto对象数组;
  2. Convert引入了hutool的jar包;
  3. <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
    </dependency>
    
  4. 字段名一致的才会将值映射。

对一个对象数组中的对象进行过滤

对一个对象数组中的对象进行过滤,常用于筛选某个字段不等于某个条件:

            List<Coupon> couponList = 查询出来的集合
            List<Coupon> Coupons = couponList.stream().filter(item -> Convert.convert(item.getCouponType==type).collect(Collectors.toList());
  1. 将Coupon对象类型中couponType字段等于type的集合筛选出来;
  2. type是变量,可以修改;

对一个对象数组中的对象添加字段属性

对一个对象数组中的对象添加字段属性:

    public ResponseEntity<List<SysCodeDto>> getCertificates(String itemCode) {
        Map<String, String> codeRelDown = new HashMap<>();
        codeRelDown.put("22", "zltx");//质量体系调查表
        codeRelDown.put("12", "wts");//委托书
        codeRelDown.put("08", "zbxy");//质保协议
        if ("12".equals(itemCode)) {
            return ResponseEntity.ok(sysCodeService.list(new LambdaQueryWrapper<SysCode>()
                    .in(SysCode::getItemCode, "01", "02", "08", "11", "12", "17", "19", "22")
                    .eq(SysCode::getCode, "1012"))
                    .stream().map(config -> {
                        SysCodeDto sys = Convert.convert(SysCodeDto.class, config);
                        sys.setDownloads(codeRelDown.get(sys.getItemCode()));
                        return sys;
                    })
                    .collect(Collectors.toList()));
        } else if ("15".equals(itemCode)) {
            return ResponseEntity.ok(sysCodeService.list(new LambdaQueryWrapper<SysCode>()
                    .in(SysCode::getItemCode, "01", "02", "12", "45", "46")
                    .eq(SysCode::getCode, "1012"))
                    .stream().map(config -> {
                        SysCodeDto sys = Convert.convert(SysCodeDto.class, config);
                        sys.setDownloads(codeRelDown.get(sys.getItemCode()));
                        return sys;
                    })
                    .collect(Collectors.toList()));
        }
  1. 将查出来的结果集中等于这三个证书的将对象字段downloads添加值;
  2. 根据itemCode查找集合;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值