0

我一直在玩 Scala HashMap,我注意到 HashMap 有两种不同的表示形式。我想知道是否有人可以解释以下区别:

Map(123 -> 1)

{123=1}

谢谢!

4

2 回答 2

5

你在哪里见过{123=1}?它不是 Scala 中的标准表示,但它JavatoString为其 Map 定义的方式。

val sm = Map(1->1, 2->2) // Map(1 -> 1, 2 -> 2)

val jm = new java.util.HashMap[Int,Int]()
jm.put(1,1)
jm.put(2,2)
jm   
// java.util.HashMap[Int,Int] = {1=1, 2=2}
于 2012-04-16T03:24:45.007 回答
2

->是一种创建元组的方法。它本身与地图没有直接关系。因此,例如123 -> 1返回一个 tuple (123, 1)。你可以在 REPL 中试试这个:

scala> 123 -> 1
res1: (Int, Int) = (123,1)

object Map您可以通过向的方法提供元组来创建地图apply,这就是您执行此操作时所做的事情:

val m = Map(123 -> 1, 456 -> 2)

是相同的

val m = Map.apply(123 -> 1, 456 -> 2)

是相同的

val m = Map.apply((123, 1), (456, 2))

它创建了一个Map包含两个条目的条目,一个带有 key123和 value 1,另一个带有 key456和 value 2

于 2012-04-16T05:14:22.087 回答