我可以帮您翻译成中文。以下是需要翻译的内容:
但是以下两个示例显示不同的输出文本:
案例2
为什么REPL中的文本输出(
我在Scala的REPL中有以下两个Map:
情况1
scala> var a1=Map("a" -> "b", "c" -> "d", "e" -> "f", "g" -> "h")
a1: scala.collection.immutable.Map[String,String] = Map(a -> b, c -> d, e -> f, g -> h)
scala> var a2=Map("a" -> "b","c" -> "d","e" -> "f","g" -> "h","i" -> "j")
a2: scala.collection.immutable.Map[String,String] = Map(e -> f, a -> b, i -> j, g -> h, c -> d)
以上两个示例在REPL中打印相同的文本:
...
scala.collection.immutable.Map[String,String] = ...
但是以下两个示例显示不同的输出文本:
案例2
scala> a1.getClass.getName
res10: String = scala.collection.immutable.Map$Map4
scala> a2.getClass.getName
res11: String = scala.collection.immutable.HashMap$HashTrieMap
为什么REPL中的文本输出(
scala.collection.immutable.Map$Map4
和scala.collection.immutable.HashMap$HashTrieMap
)不同?这些输出文本到底是什么意思?我知道当Map
元素超过四个时,会使用HashMap
而不是Map
,但为什么在情况1(变量a1
和a2
)中输出文本相同,在情况2中却不同?
Map.apply
(隐式调用)会返回不同的Map
特质实现,具体取决于存储了多少键值对。 - jub0bs