Мне интересно, есть ли изящный способ сделать групповое объединение чистым scala для последовательности объекта case scala. Вот как я это сделал.
case class UserToAccounts
(
id: Int,
email: String,
firstName: String,
lastName: String,
accountId: Seq[Int]
)
case class User
(
id: Int,
email: String,
firstName: String,
lastName: String,
accountId: Int
)
val users = Seq(
User(1, "foo@test.com", "test", "foo", 1),
User(1, "foo@test.com", "test", "foo", 2),
User(2, "bar@test.com", "test", "bar", 1)
)
val groupedUsers = users
.groupBy(u => (u.id, u.email, u.firstName, u.lastName))
.mapValues( x => x.map( y => y.accountId))
.map(z => UserToAccounts(
id = z._1._1,
email = z._1._2,
firstName = z._1._3,
lastName = z._1._4,
accountIds = z._2
))
println(groupedUsers)
List(UserToAccounts(2,bar@test.com,test,bar,List(1)), UserToAccounts(1,foo@test.com,test,foo,List(1, 2)))
Заранее благодарим за добрый совет.