私は Scala HashMap をいじっていて、HashMap の 2 つの異なる表現に気付きました。誰かが次の違いを説明できるかどうか疑問に思っていました:
Map(123 -> 1)
と
{123=1}
ありがとう!
どこで見た{123=1}
?これは Scala の標準的な表現ではありませんが、JavatoString
が Maps に対して定義する方法です。
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
タプルを返します(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
2つのエントリを持つが作成されます。1つはキー123
と値を持ち1
、もう1つはキー456
と値を持ちます2
。