Map<String, List<StockTackingExportVO>> pnDetailMap = new HashMap<>(); for (StockTackingExportVO detail : pnDetail) { String pnCode = detail.getPnCode(); //在map中获取当前code,如果存在就是空数组, List<StockTackingExportVO> detailList = pnDetailMap.getOrDefault(pnCode, new ArrayList<>()); detailList.add(detail); pnDetailMap.put(pnCode, detailList); } 解释下代码的以上
时间: 2024-04-28 19:23:36 浏览: 187
java 读取csv 并转为Map<String,Object>
这段代码的作用是将查询出来的 `pnDetail` 列表按照 PN 编码进行分组,每个 PN 编码对应一个 `StockTackingExportVO` 列表。
具体来说,代码的执行过程如下:
1. 创建一个空的 HashMap,用于保存 PN 编码和对应的 `StockTackingExportVO` 列表。
2. 遍历查询出来的 `pnDetail` 列表,对于每个 `StockTackingExportVO`,获取其 PN 编码。
3. 在 `pnDetailMap` 中获取当前 PN 编码对应的 `StockTackingExportVO` 列表,如果该列表不存在,则创建一个空的列表。
4. 将当前 `StockTackingExportVO` 添加到 PN 编码对应的列表中。
5. 将更新后的 PN 编码和对应的 `StockTackingExportVO` 列表保存到 `pnDetailMap` 中。
6. 遍历结束后,`pnDetailMap` 中保存了每个 PN 编码对应的 `StockTackingExportVO` 列表。
需要注意的是,这里使用了 `pnDetailMap.getOrDefault(pnCode, new ArrayList<>())` 方法来获取 PN 编码对应的列表,如果该列表不存在,则返回一个空的列表。这样可以避免空指针异常。
阅读全文