2017-08-27 5 views
2

こんにちは、Scalaには、HashMap、TreeMap(私はTrieだと思います)、BitMap、ListMapなど、複数の種類のマップが付属していることが分かります。スカラはどのマップを使用するのですか?

Mapの基本的な要素(1 - > 2、2 - > 3)を使用してスカラーでマップを作成すると、Scalaはその使用を選択しますか?スカラーには、上に挙げたマップの種類を選択するためのルールがいくつかありますが、そのルールは何ですか?明らかにハッシュを使用するには、ある種のハッシング戦略がどこかで定義されている必要があります。あるいは、スカラは実装の1つにデフォルトになっていますか?

おかげ

+0

バニラJavaとして、Scalaは '.hashCode'や順序付けを使用しています。 Plsは最初に[documentation](https://docs.scala-lang.org/overviews/collections/overview.html)を見ています。 – cchantep

答えて

1

documentation on HashTriesによると(HahsTriesのセクションまでスクロールします)スカラ座で使用されるデフォルトの実装は、HashMapのです。

スカラ座、しかし

はあなたが行うことでこれを確認することができます(これは、ドキュメントのリンクでもあるし、4つの要素を含む)までを含むマップなどのいくつかのケースでのHashMapの実装のいわゆる専門的な表現を返します。

val map: Map[Int, Int] = Map(1 -> 2, 2 -> 3, 3 -> 4, 4 -> 5) 
    val map2: Map[Int, Int] = Map(List(1 -> 2, 2 -> 3, 3 -> 4, 4 -> 5, 5 -> 6): _*) 

    println(map.getClass.getName) 
    println(map2.getClass.getName) 

、出力は次のとおりです。

scala.collection.immutable.Map$Map4 
scala.collection.immutable.HashMap$HashTrieMap 

あなたが使用してコードをコンパイルすることができますIDE場合は仕方キーがマナであることがわかりMap1Map2Map3およびMap4のインスタンスのgedは、内部的にはこのコレクションがタプルのシーケンス(Scala Seqではなく)で表されるため、等価です。

デフォルトのHashMap実装では、キーのハッシュを使用しています。詳細は、私が投稿したリンクにあります。

関連する問題