Scala 如何将类转换为映射[X,(列表[Y],Z)]?
我有Scala 如何将类转换为映射[X,(列表[Y],Z)]?,scala,playframework,Scala,Playframework,我有列表收集的数据如下: case class Expense_detail(po_id: Long, supplier_id: String, price: String) Expense_detail(1,"S00001","1000.0"), Expense_detail(2,"S00001","2000.0"), Expense_detail(3,"S00002","3,000.0"), Expense_detail(4,"S00003","4,000.0") 是否可以将其映射
列表
收集的数据如下:
case class Expense_detail(po_id: Long, supplier_id: String, price: String)
Expense_detail(1,"S00001","1000.0"),
Expense_detail(2,"S00001","2000.0"),
Expense_detail(3,"S00002","3,000.0"),
Expense_detail(4,"S00003","4,000.0")
是否可以将其映射到以下map
集合:
"S00001" -> ((1,2), "3000.0")
"S00002" -> ((3), "3000.0")
"S00003" -> ((4), "4000.0")
是,使用groupBy和mapValues
case class ExpenseDetail(poId: Long, supplierId: String, price: String)
val details : List[ExpenseDetail] = ...
details.
groupBy( _.supplierId ).
mapValues( details => ( (details.map(_.poId)), details.map(_.price.toInt).sum ))
这应该行得通。
我更改了命名以尊重Scala/Java最佳实践,使用CamelCase而不是snake_案例