Scala Map与HashMap的区别

21

Scala中的MapHashMap有区别吗?我正在使用scala.collection.immutable.HashMap


1
HashMapMap的一种实现方式。从它们的定义中可以看出,HashMap是一个类,而Map则是一个特质(trait)。 - Peter Neyens
4
在《Scala编程第一版》(搜索“默认不可变Map实现”),作者写道,当一个Map包含5个或更多元素时,HashMap是其默认实现。 - Peter Neyens
1个回答

26

scala.collection.immutable.Map是不可变映射的接口,而scala.collection.immutable.HashMap是一个具体的实现。

使用Map()Map.empty创建将会得到一个特殊的空单例映射,如果使用Map(a -> b)并且包含不超过4个键值对,将会产生专门设计用于小型映射的类,而5个及以上则会使用scala.collection.immutable.HashMap


作者在帖子中没有具体指定scala.collection.immutable.Map或scala.collection.Map。 scala.collection.Map()是否也会给出与scala.collection.immutable.Map()相同的Map实现? - Andrew Norman
1
scala.collection.Map.{empty, apply} 只是将对应的工厂方法委托给不可变 Map 伴生对象。请注意,如果您在方法签名中明确使用 scala.collection.Map,例如,它将接受可变映射以及不可变映射。由 Predef 自动导入的 Mapimmutable.Map - johanandren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接