我需要一個更簡潔的方式來元組序列轉化爲地圖的地圖的地圖...... 作爲一個簽名,我得到在Tuple4
情況:4元組順序要地圖地圖的地圖
def tuple4Seq2MapOfMaps[A,B,C,D](seq: Seq[(A,B,C,D)]): Map[A,Map[B,Map[C,D]]]
下面的代碼顯示了我最近醜陋代碼,我stucked用(A
類型D
任意):
type A = Int
type B = Double
type C = String
type D = Boolean
val tupleSeq = Seq[(A,B,C,D)](
(1,1.0D,"a",true),
(1,1.0D,"b",true),
(1,1.0D,"c",false)
)
val x = tupleSeq.groupBy{ _._1 }.map{ case (k,s) => (k,s.map{ x => (x._2,x._3,x._4) }) }
val y = x.map{ case (k,s) => (k,s.groupBy{_._1}.map{ case (k,s) => (k,s.map{ x => (x._2,x._3) }) }) }
val z = y.map{ case (k1,m) => (k1,m.map{ case (k2,s1) => (k2,s1.groupBy{_._1}.map{ case (k3,s2) => (k3,s2.map{ _._2 }.head) }) }) }
val m = z(1)(1.0D)
println(m("b"))
注意在使用。
如果只有Tuple4
有一個更簡潔的方法將是很好的,但更有趣的是如何推廣到TupleN
(N> = 2)。
有人在那裏有一個不錯的方法介意嗎?
謝謝!
非常好的解決方案!謝謝! – 2011-02-15 19:11:57