我一直在玩Scala HashMap,我注意到了HashMap的两种不同表现形式。我想知道是否有人可以解释其中的区别:
Map(123 -> 1)
和
{123=1}
谢谢!
答案 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>