scala - 为什么 Scala 中没有 mapKeys?

标签 scala collections

Scala Collection 库有 mapValuesfilterKeys .没有的原因mapKeys可能是性能方面(关于 HashMap 实现),正如这里针对 Haskell 所讨论的:Why there's not mapKeys in Data.Hashmap?

然而。

撇开性能影响不谈,我发现自己需要 mapKeys至少和 mapValues 一样多,仅用于按摩数据(即我使用 map 进行数据抽象,而不是为了它的提取速度)。

我错了,您将使用哪种数据模型?元组?

最佳答案

不知道为什么它不在标准库中,但是您可以使用隐式类轻松拉皮条

  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))

关于scala - 为什么 Scala 中没有 mapKeys?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427920/

相关文章:

scala - 使用列表中的参数调用函数

java.lang.OutOfMemory错误: Java heap space ("-Xmx1280M")

java - 将值从映射转换为集合

java - Scala:需要 "explicit return"吗?

scala - 仅使用 IO monad 中的值,无需先行 IO 操作

scala - 评估 Spark DataFrame 中的公式

Java扩展类类型

scala - 在 Scala 中表示值约束的最佳方法?

swift - Swift 中的哪些值类型支持写时复制?

java - 将字符的 ArrayList 转换为字符串?