有没有办法维护Scala的breakOut订购?

时间:2018-05-21 22:31:53

标签: scala

我最近发现了breakOut并且喜欢它有多优雅,但注意到它并没有保持秩序。

例如(来自REPL):

scala> val list = List("apples", "bananas", "oranges")
list: List[String] = List(apples, bananas, oranges)

scala> val hs: HashMap[String, Int] = list.map{x => (x -> x.length)}(breakOut)
hs: scala.collection.mutable.HashMap[String,Int] = Map(bananas -> 7, oranges -> 7, apples -> 6)

我喜欢使用breakOut,因为它非常干净整洁,但订购对我很重要。有没有办法让它维护秩序,或者我是否必须一次向我的hashmap添加元素?

1 个答案:

答案 0 :(得分:2)

您会看到此行为,因为HashMap是具有未定义顺序的数据结构。即使您在哈希映射中看到元素的某些排序并且它在运行中是一致的,您也不应该依赖它。如果您确实需要订单,请考虑使用LinkedHashMap