Java 8如何将Map的List转换为List的Map?

问题描述 投票:0回答:1

我已经关注了许多链接,例如:https://www.mkyong.com/java8/java-8-convert-list-to-map/Java 8 List进入Map,但我没有来了解如何创建

Map<Integer, List<Integer>>

假设一名员工可以在多个部门工作,所以我试图在这里实现这一点

这是我的代码:

List<Map<String, Object>> results = jdbcTemplate.queryForList(SQL, empId);

Map<Integer, List<Integer>> resultMap = new HashMap<>();

List<Integer> tempLst = new ArrayList<>();
for (Map<String, Object> map : results) {
    tempLst.add(Integer.valueOf(map.get("DEPARTMENT_ID").toString().trim()));
}
resultMap.put(empId,tempLst);

我尝试了如下所示:

results.stream().collect(Collectors.toMap(currencyId, Arrays::asList))

但这并不能达到我的目的,我也尝试过

results.stream().collect(groupingBy(currencyId, mapping(Integer.valueOf(map.get("EMP_ID").toString().trim()), toList())));
java java-8
1个回答
0
投票
Map<String,List<Integer>> collect = maps.stream().flatMap(x -> x.entrySet().stream())
            .filter(y->y.getKey().equalsIgnoreCase("Department1"))
            .collect(Collectors.groupingBy(Map.Entry::getKey,Collectors.mapping(Map.Entry::getValue,Collectors.toList())));

我在这里转换了

  1. List> 进入List> 使用FlatMap
  2. 现在按部门筛选。
  3. 转换为map,其中entry.key为键,Entry.Value为值列表。
© www.soinside.com 2019 - 2024. All rights reserved.