2016-09-14 83 views
0

我有一個對象,A包含另一個對象,B包含兩個字符串,stringOne和stringTwo。斯卡拉 - 基於列表成員變量值將列表轉換爲HashMap

考慮到我有A的列表/序列,

是否有可能建立從A的列表中選擇一個地圖,這導致A型的一個HashMap - >序列[B],其中發生的事情進入Seq [B]是具有相同的B.stringOne和B.stringTwo的B項目?

A和B是案例類。

+6

它通常是更好地_demonstrate_問題,用代碼,而不是試圖_describe_問題,用字。 – jwvh

回答

1

你是正在尋找這樣的事情:

case class B(s1: String, s2: String) 
case class A(b: B) 
val ls = List(A(B("1","2")), A(B("3","4")), A(B("5","6")), A(B("1","2"))) 
ls.groupBy(identity).map({case (k,v) => (k, v.map(_.b))}) 

//Output: Map(A(B(1,2)) -> List(B(1,2), B(1,2)), A(B(3,4)) -> List(B(3,4)), A(B(5,6)) -> List(B(5,6)))