有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用元组作为键并为部分键提供迭代器视图的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)

由于性能原因,有必要迭代子映射(即albertseinsteins),而不迭代原始映射的整个键集(ages)。所以,filtergroupBy没有帮助

此外,使用嵌套映射(Map[String, Map[String, Int]])是不可能的,因为它们只允许按键的一部分过滤,而不允许按键的另一部分过滤

虽然不可变映射是可以的,但最可取的解决方案是提供全功能视图的可变映射,这样einsteins += "Eduard" -> 107会导致ages多了一个条目("Eduard", "Einstein") -> 107


共 (0) 个答案