使用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);
            }
        }
发布了74 篇原创文章 · 获赞 19 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43770545/article/details/102729499