我有一个AssistantList,需要映射到的映射(键-助理登录,值-其主管的ArrayList )
我使用了下面的代码来映射for循环。
如何使用流api来实现相同的功能,
for(Assistant assistant: assistantList)
{
for(Supervisor supervisor: assistant.getSupervisorList())
{
map.computeIfAbsent(assistant.getLogin(), k->new ArrayList<>()).add(supervisor.getLogin());
}
}谢谢
发布于 2021-08-12 15:22:41
我认为您可以组合使用groupBy进行分组,使用flatMapping合并supervisors:
import static java.util.stream.Collectors.flatMapping;
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.toList;
Map<String, List<String>> grouped = assistantList.stream()
.collect(groupingBy(
Assistant::getLogin,
flatMapping(
assistant -> assistant.getSupervisorList()
.stream()
.map(Supervisor::getLogin),
toList())
));
}
}此外,我认为Map<String, Set<String>>可以更好地工作,以消除可能的主管重复值。
https://stackoverflow.com/questions/68758964
复制相似问题