假设我有一个带有toInt方法的Point类,并且Map[Point,V]对于某种类型我有一个不可变的V。在Scala中将其转换为an的最有效方法是IntMap[V]什么?这是我当前的实现:
def pointMap2IntMap[T](points: Map[Point,T]): IntMap[T] = {
var result: IntMap[T] = IntMap.empty[T]
for(t <- points) {
result += (t._1.toInt, t._2)
}
result
}
Run Code Online (Sandbox Code Playgroud)
[编辑]我的意思主要是更快,但是即使它们显然不是更快,我也会对较短的版本感兴趣。
IntMapapply为此有一个内置的工厂方法():
IntMap(points.map(p => (p._1.toInt, p._2)).toSeq: _*)
Run Code Online (Sandbox Code Playgroud)
如果速度是一个问题,则可以使用:
points.foldLeft(IntMap.empty[T])((m, p) => m.updated(p._1.toInt, p._2))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |