把一个对象集合转成对象中某个字段的集合:
List<Coupon> couponList = 查询出来的集合 List<Long> couponIds = couponList.stream().map(Coupon::getCouponId).collect(Collectors.toList()); 获取集合中的couponId的集合;Coupon为对象,couponId为想要获得的对象字段;返回对象List泛型为字段属性的类型。将一个对象数组集合转另一个对象数组集合,常用于DTO转换:
List<Coupon> couponList = 查询出来的集合 List<CouponDto> CouponDtos = couponList.stream().map(config -> Convert.convert(CouponDto.class, config)).collect(Collectors.toList()); 将Coupon对象数组转为CouponDto对象数组;Convert引入了hutool的jar包; <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> 字段名一致的才会将值映射。对一个对象数组中的对象进行过滤,常用于筛选某个字段不等于某个条件:
List<Coupon> couponList = 查询出来的集合 List<Coupon> Coupons = couponList.stream().filter(item -> Convert.convert(item.getCouponType==type).collect(Collectors.toList()); 将Coupon对象类型中couponType字段等于type的集合筛选出来;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())); } 将查出来的结果集中等于这三个证书的将对象字段downloads添加值;根据itemCode查找集合;