使用元组作为键并为部分键提供迭代器视图的Java或Scala映射?
是否有一个以元组为键的映射,并提供方法来获取视图(as in Guava's Multimap),以“修复”键的一部分,并获取只获取键的另一部分的映射
该地图应提供以下方法:
val ages = MagicMap[(String, String), Int]()
ages += ("Albert", "Einstein") -> 138
ages += ("Albert", "Schweitzer") -> 142
ages += ("Hermann", "Einstein") -> 170
val alberts: Map[String, Int] = ages.view1("Albert") // Map("Einstein" -> 138, "Schweitzer" -> 142)
val einsteins: Map[String, Int] = ages.view2("Einstein") // Map("Albert" -> 138, "Hermann" -> 170)
由于性能原因,有必要迭代子映射(即alberts
和einsteins
),而不迭代原始映射的整个键集(ages
)。所以,filter
或groupBy
没有帮助
此外,使用嵌套映射(Map[String, Map[String, Int]]
)是不可能的,因为它们只允许按键的一部分过滤,而不允许按键的另一部分过滤
虽然不可变映射是可以的,但最可取的解决方案是提供全功能视图的可变映射,这样einsteins += "Eduard" -> 107
会导致ages
多了一个条目("Eduard", "Einstein") -> 107
共 (0) 个答案