2016-09-14 89 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)))