【发布时间】:2018-10-26 02:01:43
【问题描述】:
假设我有一个这样的 scala 地图 -
Map[String, List[String]] = Map(
"A"->List(1,2,3),
"B"->List(2,4),
"C"->List(4,5),
"D"->List(7,8,9),
"E"->List(8,9),
"F"->List(4,5,7),
"G"->List(1,3,2)
)
我想对键进行分组,使它们的交集不为空。例如结果应该是 -
Map(
List("A","B","G")->List(2),
List("C","F")->List(4,5),
List("D","E")->List(8,9)
)
请注意,可以有多个输出,例如可以有 List("B","C")->List(4)。我只需要选择任何人,只要所有的键都存在并且键不应该重复,例如 - 'B' 和 'C' 已经出现在地图中,所以稍后即使我们仍然找到任何交叉对是不为空,例如我们找到了“B”和“C”,我们不应该添加它。 我解决这个问题的方法包括将值列表转换为一个集合,然后遍历 map 的所有条目,使其不断将其值与下一个值相交,如果交集不为空,我们将对键进行分组。
但我想知道是否有其他方法可以做到这一点。
编辑-
关键是键列表应该很大,并且它的值应该至少有一个元素。
【问题讨论】:
-
编辑了问题。请检查。
标签: scala collections