使用流 Map<String, List<String>> collect = list.stream().collect(Collectors.groupingBy(map ->
map.get("LINE").toString(), Collectors.mapping(map -> map.get("STAGE").toString(), Collectors.toList())));
System.out.println(collect);
不使用流的话 就需要这样:
private Map<String, List<String>> getLineStageMap(List<Map<String, String>> positionLineStageList) { Map<String, List<String>> lineStageMap = new HashMap();//线体为key,list里面存stage if (null != positionLineStageList && !positionLineStageList.isEmpty()) { log.info("positionLineStageList====" + positionLineStageList); //把查询出来的数据处理成key为line(线体),value为stage(段别)list的一个map格式。 for (Map<String, String> positionLineStageMap : positionLineStageList) { if (null != positionLineStageMap && !positionLineStageMap.isEmpty()) { String line = positionLineStageMap.get("LINE"); String stage = positionLineStageMap.get("STAGE"); if (StringUtils.isNotBlank(line) && StringUtils.isNotBlank(stage)) { if (!lineStageMap.containsKey(line)) { List<String> stageList = new ArrayList<>(); stageList.add(stage); lineStageMap.put(line, stageList); } else { lineStageMap.get(line).add(stage); } } } } } return lineStageMap; }