私は順序付けられていないマップを持っています:
class O(val a: Int)
Map[String, List[O]]
私が変えたいのは:
SortedMap[String, SortedMap[Int, O]]
O フィールドをキーとする子 SortedMap を使用します。
以下よりも慣用的なコードがあるに違いないと確信しています...
class O(val a: Int)
val a: Map[String, List[O]] = Map[String, List[O]]( ("b" -> List(new O(3), new O(2))), "a" -> List(new O(1), new O(2)))
val key1s = a map (_._1)
val oMapsList = ListBuffer[SortedMap[Int, O]]()
for (key1 <- key1s) {
val oList = a(key1)
val key2s = oList map (_.a)
val sortedOMap = SortedMap[Int, O]() ++ (key2s zip oList).toMap
oMapsList += sortedOMap
}
val sortedMap = SortedMap[String, SortedMap[Int, O]]() ++ (key1s zip oMapsList).toMap
予想される sortedMap の内容は次のとおりです。
"a" -> ( (1 -> O(1)),(2 -> O(2)) )
"b" -> ( (2 -> O(2)),(2 -> O(3)) )