【发布时间】:2018-01-23 09:34:30
【问题描述】:
我有一个场景,我根据条件在 scala 中压缩两个列表。 它们可能不按顺序排列。最好的方法是什么?
我想将具有相同 requestId 的 DirectRetailCM 和 DirectRetailCM 分组为一个元组。
object Main extends App {
case class SalesDoc(val id: Int, val name: String, val requestId: String) {}
val list = List(
SalesDoc(1, "ILLEGAL", "1"),
SalesDoc(2, "DirectRetailCM", "1"),
SalesDoc(3, "DirectRetailOffsetInvoice", "2"),
SalesDoc(4, "DirectRetailCM", "2"),
SalesDoc(5, "OTHER", "2"),
SalesDoc(5, "DirectRetailCM", "LEFTOUT"),
SalesDoc(6, "ILLEGAL2", "4"),
SalesDoc(5, "OTHER", "3"),
SalesDoc(7, "DirectRetailOffsetInvoice", "4"),
SalesDoc(8, "DirectRetailCM", "4")
)
// I expect zip results of drOffsetInvoice and drCms as
List(
(SalesDoc(3, "DirectRetailOffsetInvoice", "2"), SalesDoc(4, "DirectRetailCM", "2")),
(SalesDoc(7, "DirectRetailOffsetInvoice", "4"), SalesDoc(8, "DirectRetailCM", "4"))
)
}
我能想到的最初方法是
- 组 directRetailCM - list.filter(e => e.name == "DirectRetailCM")
- 组 DirectRetailOffsetInvoice - list.filter(e => e.name == "DirectRetailOffsetInvoice")
- 同时压缩 - 但可能不按顺序进行
- 可能存在没有对应的行
您能否建议我需要考虑的任何其他方法?
【问题讨论】:
标签: scala scala-collections scalaz