【发布时间】:2019-06-03 23:42:48
【问题描述】:
我有一个关系列表。每个关系对象都有三个变量:personA、personB 和 relationshipType。
relationshipType对象有两个变量:relationship(Son)和relationshipPlural(Sons)
我有一个要求,我需要列出一个人的关系。如果一个人有一个妻子,那就是:
Wife <wifeName>
如果此人有多个儿子,则为:
Sons <firstSonName>
<secondSonName>
是否有一个简单的 lambda 表达式,我可以将关系列表转换为 map<String,List<relationship>>,如果键有一个包含多个项目的列表,那么键值是 relationshipType.relationshipPlural 值?
我能想到的唯一选择是使用两个表达式,
1)Collectors.toMap()创建relationshipType的map,然后
2) 处理地图以创建另一个地图,如果地图的值是具有多个值的列表,则地图的键将为 relationshipType.relationshipPlural。
提前致谢
【问题讨论】:
-
您可以使用
groupBy按类型对它们进行分组...但是您是说地图的键对于单个和多个关系会有所不同? (这在单个管道中可能无法巧妙地实现) -
你好@Naman,谢谢你的评论。是的。如果通过 relationshipType 有多个关系,则使用 relationshipType.relationshipPlural 作为映射键。否则,使用 relationshipType.relationship。谢谢
标签: java java-8 java-stream