aio*_*obe 15 collections scala map
将a Map[A, Set[B]]变为a 的最佳方法是Map[B, Set[A]]什么?
例如,我该怎么转
Map(1 -> Set("a", "b"),
2 -> Set("b", "c"),
3 -> Set("c", "d"))
Run Code Online (Sandbox Code Playgroud)
进入
Map("a" -> Set(1),
"b" -> Set(1, 2),
"c" -> Set(2, 3),
"d" -> Set(3))
Run Code Online (Sandbox Code Playgroud)
(我在这里只使用不可变集合.而我真正的问题与字符串或整数无关.:)
Set*_*sue 10
在aioobe和Moritz的帮助下:
def reverse[A, B](m: Map[A, Set[B]]) =
m.values.toSet.flatten.map(v => (v, m.keys.filter(m(_)(v)))).toMap
Run Code Online (Sandbox Code Playgroud)
如果明确调用contains,它会更具可读性:
def reverse[A, B](m: Map[A, Set[B]]) =
m.values.toSet.flatten.map(v => (v, m.keys.filter(m(_).contains(v)))).toMap
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1817 次 |
| 最近记录: |