我一直在玩 Scala HashMap,我注意到 HashMap 有两种不同的表示形式。我想知道是否有人可以解释以下区别:
Map(123 -> 1)
和
{123=1}
谢谢!
你在哪里见过{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}
->
是一种创建元组的方法。它本身与地图没有直接关系。因此,例如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
。