2015-07-28 15 views
8

Esiste una differenza tra Scala Map e HashMap? Sto usando il scala.collection.immutable.HashMap.Scala Map vs HashMap

+0

[ 'HashMap'] (http: // www.scala-lang.org/api/2.11.5/index.html#scala.collection.immutable.HashMap) è un'implementazione di ['Map'] (http://www.scala-lang.org/api/ 2.11.5/index.html # scala.collection.immutable.Map). Come puoi vedere nelle loro definizioni, 'HashMap' è una classe e' Map' è un tratto. –

+1

In [_Programmazione in Scala, 1ed_] (http://www.artima.com/pins1ed/collections.html#17.3) (cerca "_Implementazioni cartografiche immutabili predefinite") scrivono che un 'HashMap' è l'implementazione predefinita per una 'Mappa' con 5 elementi o più. –

risposta

13

scala.collection.immutable.Map è l'interfaccia per mappe immutabili mentre scala.collection.immutable.HashMap è un'implementazione concreta.

Creazione con Map() o Map.empty dà una speciale mappa vuota Singleton, con Map(a -> b) con un massimo di posizioni coppie cede classi specializzate per le piccole mappe e 5 tali e verso l'alto ti dà scala.collection.immutable.HashMap

+0

L'autore non ha specificato scala.collection.immutable.Map o scala.collection.Map nel post. Scala.collection.Map() fornisce anche le stesse implementazioni di Map risultanti come scala.collection.immutable.Map()? –

+1

'scala.collection.Map. {Empty, apply}' si limita a delegare i metodi di fabbrica corrispondenti nell'immutabile companion 'Map'. Si noti però che se si utilizza esplicitamente 'scala.collection.Map' in una firma di metodo, ad esempio, si accettano sia le mappe mutabili che immutabili. La 'Map' importata automaticamente (da Predef) è' immutable.Map'. – johanandren