[英]How do I convert a Map[Int, Any] to a SortedMap in Scala? Or a TreeMap?
[英]How to convert a SortedMap to mutable Map
我有以下格式的數據類型:
Iterable[scala.collection.SortedMap[String,Double]]
並且我需要以下數據類型:
scala.collection.mutable.Map[String, Double]
謝謝
首先將迭代器轉換為序列,然后將其轉換為可變Map
。 為了說明這一點,例如
val a: scala.collection.SortedMap[String,Double] = SortedMap("a" -> 1.1, "b" -> 2.2)
然后
val m = scala.collection.mutable.Map( a.iterator.toSeq: _*)
m: scala.collection.mutable.Map[String,Double] = Map(b -> 2.2, a -> 1.1)
注意,結果Map
的順序丟失了。
假設您想要將scala.collection.SortedMap[String,Double]
轉換為scala.collection.mutable.Map[String, Double]
,則可以執行以下操作:
val m1 = SortedMap("key1" -> 1.0, "key2" -> 2.0) // immutable
val m2 = scala.collection.mutable.Map[String, Double]() ++= m1 // mutable
但是,如果您真的想將Iterable[scala.collection.SortedMap[String,Double]]
轉換為scala.collection.mutable.Map[String, Double]
,那么您不清楚期望得到的結果是什么。
希望能有所幫助!
編輯 :然后,這意味着您真的想將Iterable轉換為單個可變映射。 好吧,您可以執行此操作,盡管它看起來是一個非常奇怪的轉換。 很高興知道您為什么要轉換它:
val m1 = SortedMap("key1" -> 1.0, "key2" -> 2.0) // immutable
val m2 = SortedMap("key3" -> 3.0, "key4" -> 4.0) // immutable
val it = Iterable(m1, m2)
val z = scala.collection.mutable.Map[String, Double]() ++= it.foldLeft[List[(String, Double)]](Nil)((x,m) => m.toList ::: x)
看起來更像是駭客,但無論如何
scala> val a = collection.SortedMap("a" -> 1.1, "b" -> 2.2)
a: scala.collection.SortedMap[String,Double] = Map(a -> 1.1, b -> 2.2)
scala> type MMap = collection.mutable.Map[String, Double]
defined type alias MMap
scala> a.to[({type l[A] = collection.mutable.Map[String, Double]})#l]
res1: scala.collection.mutable.Map[String,Double] = Map(b -> 2.2, a -> 1.1)
將Map
轉換為mutable.Map
scala> a.to[({type l[a] = MMap})#l]
res0: scala.collection.mutable.Map[String,Double] = Map(b -> 2.2, a -> 1.1)
將Iterable[Map]
轉換為mutable.Map
scala> val as = Iterable.fill(1)(a)
as: Iterable[scala.collection.SortedMap[String,Double]] = List(Map(a -> 1.1, b -> 2.2))
scala> val ms: MMap = as.flatMap(_.to[({type l[a] = MMap})#l])(collection.breakOut)
ms: MMap = Map(b -> 2.2, a -> 1.1)
另請注意,在這種情況下,相交的鍵將被以后的鍵替換。 有關如何使用相同的鍵合並地圖的信息,請參見這一本 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.