何时使用Scala树映射?

何时使用Scala树映射?,scala,Scala,给出以下示例: 我不清楚什么时候使用树形图比使用树形图更有利。它是什么时候的?TreeMap保证映射中的条目使用键按排序顺序排列,而asmap不提供任何此类保证 因此,如果您想要在映射中对键进行排序,请使用TreeMap,否则普通映射就足够了。我使用TreeMap的一个地方是为生成令牌。要创建令牌,需要使用按字母顺序排序的url参数创建字符串。我在一个映射中获取url参数,然后将其放在树映射中进行排序 有点深- Scala用于创建HashMap(这是Map的默认实现),其中数据结构是Trie,键

给出以下示例:


我不清楚什么时候使用树形图比使用树形图更有利。它是什么时候的?

TreeMap
保证映射中的条目使用键按排序顺序排列,而as
map
不提供任何此类保证

因此,如果您想要在映射中对键进行排序,请使用
TreeMap
,否则普通映射就足够了。我使用TreeMap的一个地方是为生成令牌。要创建令牌,需要使用按字母顺序排序的url参数创建字符串。我在一个映射中获取url参数,然后将其放在树映射中进行排序

有点深-

Scala用于创建HashMap(这是Map的默认实现),其中数据结构是Trie,键是散列的。此外,当大小小于5()时,Scala会优化HashMap。在正常情况下,它提供恒定的查找和插入成本

另一方面,树形图是使用。红黑树的查找和插入开销为O(ln n)

因此,当您不希望对键进行排序以获得更好的性能时,请使用Map


更多细节在集合中

这个问题没有任何意义,因为
TreeMap
Map
。如果我错了,请纠正我,但是scala
Map
使用散列来查找键?然而,正如我在树映射中观察到的,它实际上对键进行了排序。
scala.collection.immutable.Map
是未实现方法的一个特点。你说的是
scala.collection.immutable.HashMap
。伴随对象的apply方法有时返回该解释的实例。排序不是HashMap和TreeMap之间的唯一区别。还有一些重要的性能差异。
scala> import scala.collection.immutable.TreeMap
import scala.collection.immutable.TreeMap

scala> val tm = TreeMap( ("foo" -> List(2,1) ) )
tm: scala.collection.immutable.TreeMap[String,List[Int]] = Map(foo -> List(2, 1))

scala> tm + ("bar" -> List(300, 4) )
res0: scala.collection.immutable.TreeMap[String,List[Int]] = Map(bar -> List(300, 4), foo -> List(2, 1))

scala> res0 + ("bippy" -> List(4) )
res1: scala.collection.immutable.TreeMap[String,List[Int]] = Map(bar -> List(300, 4), bippy -> List(4), foo -> List(2, 1))