正如标题所述,将LinkedHashMap转换为Map是否保留了元素的存储顺序?
我不相信,但找不到任何证据.
或者,Scala中是否存在任何不可变Map的实现,它保留了插入元素的顺序?
通用Map接口不能保证订购.它也不可能,因为这将HashMap作为可能的实施排除.
我相信collection.immutable.ListMap保留插入顺序,你也可以使用LinkedHashMap通过Map接口,这将阻止访问任何mutator方法.通过显式指定类型,这很容易做到:
val m: scala.collection.Map[Int,Int] = collection.mutable.LinkedHashMap(1->2, 2->3)
Run Code Online (Sandbox Code Playgroud)
或(使用类型归属):
val m = collection.mutable.LinkedHashMap(1->2, 2->3) : Map[Int,Int]
Run Code Online (Sandbox Code Playgroud)
不,LinkedHashMap.toMap不保留插入订单.
我知道的最好的方法是将它转换为ListMap(不可变):
def toMap[A, B](lhm: mutable.LinkedHashMap[A, B]): ListMap[A, B] = ListMap(lhm.toSeq: _*)
Run Code Online (Sandbox Code Playgroud)
简单地隐藏变异方法与转换为不可变对象不同.
| 归档时间: |
|
| 查看次数: |
5169 次 |
| 最近记录: |