【问题标题】:Why is SortedMap with default value not sorted anymore?为什么默认值的 SortedMap 不再排序?
【发布时间】:2015-09-15 01:09:55
【问题描述】:

具有默认值的 SortedMap 是否有理由成为常规的未排序 Map?

scala> val a = scala.collection.immutable.SortedMap(1 -> "uno", 3 -> "tres", 2 -> "dos")
a: scala.collection.immutable.SortedMap[Int,String] = Map(1 -> uno, 2 -> dos, 3 -> tres)

scala> a.withDefaultValue("")
res19: scala.collection.immutable.Map[Int,String] = Map(1 -> uno, 2 -> dos, 3 -> tres)

【问题讨论】:

  • 是的,但这样做的理由是什么?

标签: scala scala-collections


【解决方案1】:

函数withDefaultValueMap 中实现,并返回一个包装器类型WithDefault,它以原始Map 作为底层实现。

虽然类型只是Map[A, B],但底层映射仍然是您的排序映射。您添加的键仍将被排序:

val a: SortedMap[Int, String] = scala.collection.immutable.SortedMap(1 -> "uno", 3 -> "tres", 2 -> "dos")
val b = a.withDefaultValue("")

val c = b + (4 -> "quattro")
val d = c + (0 -> "zero")

val e = d.toList

>> e: List[(Int, String)] = List((0,zero), (1,uno), (2,dos), (3,tres), (4,quattro))

【讨论】:

  • 感谢您的解释。我设法创建了一个示例,证明底层映射仍然是排序的,即使相同的键在常规映射中以不同的顺序出现,所以我相信你:)
猜你喜欢
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 2021-01-03
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 2020-05-02
相关资源
最近更新 更多