2015-10-28 125 views
0

的能否請你建議我怎麼能實現如下:斯卡拉數據表列出地圖

我有一個DataTable的黃瓜特徵文件如:

|A |B |C | 
|1 |2 |3 | 
|11 |22 |33 | 
|111|222|333| 

我試圖得到的名單地圖是這樣的:

A:1,11,111; B:2,22,222; C:3,33,333 

如果我不喜歡這個

List[Map[String, Any]] = 
    data.asMaps(classOf[String], classOf[Any]).asScala.map(_.asScala.toMap).toList 

我得到了另外一個員工:A:1,B:2,C:3,A:11 ....

回答

0

移調,然後映射到地圖。

val source = List(
    List("A", "B", "C"), 
    List(1, 2, 3), 
    List(11, 22, 33), 
    List(111, 222, 333) 
) 

val transposed = source.transpose 

println(transposed) // List(List(A, 1, 11, 111), List(B, 2, 22, 222), List(C, 3, 33, 333)) 

val mapped = transposed.map { 
    case l: List[Any] => Map(l.head -> l.tail) 
} 

println(mapped) // List(Map(A -> List(1, 11, 111)), Map(B -> List(2, 22, 222)), Map(C -> List(3, 33, 333))) 
+0

謝謝。但是在映射中,Array 15的默認大小有錯誤,所以如果我只有3個值 - 我仍然有15個條目。所以修改了一下'l => Map(l.head - > l.tail)' – Zuh