使用Guava 将两个不同泛型的List整合成一个List

表连接查询返出两个List,现在需要分别从这两个List中提取属性,组合返出一个新的List,使用guava可以解决。

引入依赖:

注意:引入18.0版本,启动时会报错。推荐使用20.0版本

<dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>20.0</version>
        </dependency>

如下:StockSupplier和Stock为实体类

        // stockSupplierVoList为你要返回的VoList
	    List<StockSupplierVo> stockSupplierVoList = new ArrayList<>();
        List<StockSupplier> stockSupplierList = stockSupplierService.getStockSuppliersByIds(warehouseIds);
        // stockSupplierList非空判断处理,略......
        stockSupplierList
                .forEach(item -> {
                    stockIds.add(item.getStock().getId());
                });
        List<Stock> stockList = stockService.getStockByIds(stockIds);
         // stockList非空判断处理,略......
        //先将stockList转成以stockSupplierId为key,Stock为value的map
        Map<Long, Stock> stockMap = Maps.uniqueIndex(stockList, new Function<Stock, Long>() {
            @Override
            public Long apply(Stock stock) {
                return stock.getId();
            }
        });
        //通过stockSupplierId从stockMap获取Stock对象,再转为最后需要的VO对象
        for (StockSupplier stockSupplier : stockSupplierList) {
            Stock stock = stockMap.get(stockSupplier.getStock().getId());
            if (stock != null) {
                StockSupplierVo stockSupplierVo = new StockSupplierVo();
                stockSupplierVo.setStockSupplierId(stockSupplier.getId());
                stockSupplierVo.setName(stockSupplier.getName());
                stockSupplierVo.setDescription(stockSupplier.getDescription());
                stockSupplierVo.setWareHouse(stockSupplier.getWarehouse());
                stockSupplierVo.setStockUnit(stockSupplier.getStockUnit());
                stockSupplierVo.setStockSupplierNum(stockSupplier.getStockNum());
                stockSupplierVo.setCreator(stockSupplier.getCreator());
                stockSupplierVo.setCreateTime(stockSupplier.getCreateTime());
                stockSupplierVo.setModifier(stockSupplier.getModifier());
                stockSupplierVo.setModificationTime(stockSupplier.getModificationTime());
                stockSupplierVo.setGoods(stock.getGoods());
                stockSupplierVo.setSpecification(stock.getSpecification());
                stockSupplierVo.setStockNum(stock.getStockNum());
                stockSupplierVoList.add(stockSupplierVo);
            }
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值