0

私は Scala HashMap をいじっていて、HashMap の 2 つの異なる表現に気付きました。誰かが次の違いを説明できるかどうか疑問に思っていました:

Map(123 -> 1)

{123=1}

ありがとう!

4

2 に答える 2

5

どこで見た{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}
于 2012-04-16T03:24:45.007 に答える
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))

これにより、Map2つのエントリを持つが作成されます。1つはキー123と値を持ち1、もう1つはキー456と値を持ちます2

于 2012-04-16T05:14:22.087 に答える