Scala HashMap的不同表示

时间:2012-04-16 03:22:52

标签: scala hashmap

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

Map(123 -> 1)

{123=1}

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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}

答案 1 :(得分:2)

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

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

您可以通过向object Map的{​​{1}}方法提供元组来创建地图,这是您执行此操作时所执行的操作:

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,另一个包含值123,另一个条目包含密钥1和值456。< / p>