想象一个多地图跟踪人员,每个人都有一个分配任务列表。
Map< Person , List< Task > > personToTasks =
Map.of(
new Person( "Alice" ) , List.of( new Task( "a1" ), new Task( "a2") ) ,
new Person( "Bob" ) , List.of( new Task( "b1" ) ) ,
new Person( "Carol" ) , List.of( new Task( "c1" ), new Task( "c2"), new Task( "c3") )
)
;
如何使用流来获取新地图,将每个地图映射Person
到Integer
在其分配任务列表中找到的项目数?
如何获得与此硬编码地图等效的结果:
Map< Person , Integer > personToTaskCount =
Map.of(
new Person( "Alice" ) , 2 ,
new Person( "Bob" ) , 1 ,
new Person( "Carol" ) , 3
)
;
我一直在尝试以下排列:
Map < Person, Integer > personToTaskCount =
personToTasks.keySet().stream().collect
(
Collectors.mapping
(
Map.Entry :: getKey ,
???
)
)
;