Scala集合库具有mapValuesfilterKeys。它没有mapKeys的原因可能是性能方面(关于HashMap的实现),如以下针对Haskell所讨论的:Why there's not mapKeys in Data.Hashmap?

然而。

除了性能方面的问题,我发现自己至少需要mapKeysmapValues一样多,仅用于按摩数据(即,我正在使用映射进行数据抽象,而不是出于获取速度的考虑)。

我是错的,您将为此使用哪种数据模型?元组?

最佳答案

不知道为什么它不在标准库中,但是您可以使用隐式类轻松地将您的库插入

  implicit class MapFunctions[A, B](val map: Map[A, B]) extends AnyVal {
    def mapKeys[A1](f: A => A1): Map[A1, B] = map.map({ case (a, b) => (f(a), b) })
  }

  val m = Map(1 -> "aaa", 2 -> "bbb")

  println(m.mapKeys(_ + 1))

09-26 18:22