如何将列表转换为Map Map >

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

我有一个List<Employee> e,我想将其转换为Map<String, Map<String,Emp>>其中外部字符串应为“名称”,内部字符串应为“域”]

       Name Id Domain
e(0) - Emp1, 1, Insurance
e(1) - Emp1, 2, Sales
e(2) - Emp2, 3, Sales
e(3) - Emp4, 4, Marketing

我已尝试以下操作-

e.stream().collect(Collectors.groupingBy(
                                   Employee::getName,
                                   toMap(Employee::getDomain,Emp)));

所以预期的输出图应该看起来像

<Emp1>
     <Insurance, e(0)>
     <Sales, e(1)>
<Emp2>
     <Sales, e(2)>
<Emp4>
     <Marketing, e(3)>

但是我只能得到唯一的值实际输出-

<Emp1>
     <Insurance, e(0)>
<Emp2>
     <Sales, e(2)>
<Emp4>`enter code here`
     <Marketing, e(3)>

有人可以告诉最好的方法吗?

java collections hashmap collectors
2个回答
0
投票
您主要寻找的是嵌套分组,例如:

0
投票
由于输出应该是Map<String, Map<String,Employee>>而不是Map<String, Map<String,List<Employee>>>,因此可以链接两个groupingBy,然后使用reduce来确保每个内部组都有一个Employee
© www.soinside.com 2019 - 2024. All rights reserved.