2015-11-07 56 views
0

我正在使用一個使用的TrieMap,我在其上執行一個.mapValues()操作,該操作返回一個MapLike []對象。但我需要將其轉換爲HashMap或任何可序列化的Map來維護排序順序,因爲它必須通過網絡傳輸。什麼是最有效的方式來做到這一點?Scala - 將TrieMap轉換成HashMap

+0

'yourTrieMap.toMap'? – moem

+2

TrieMap是可序列化的,HashMap不維護順序。我真的不知道你的問題 – kosii

+1

由於地圖不能維持秩序,你可以從'.toSeq'開始,看它是否能滿足你的需求?如果需要,也許SortedMap? – wwkudu

回答

2

使用.mapValues實際上並沒有創建新的TrieMap,它只是返回原始視圖。要實際轉換並在舊集合中創建新的TrieMap,可以使用帶有稍微不同的簽名的.transform方法,該方法返回相同類型的新集合。唯一的缺點是你必須使用相同的值類型:

scala> val map = TrieMap(1->5).transform((k, v) => v + 1) 
map: scala.collection.concurrent.TrieMap[Int,Int] = TrieMap(1 -> 6) 

scala> :t map 
scala.collection.concurrent.TrieMap[Int,Int]