我有两个不同的列表,其中包含不同的数据。 这是一个列表的例子 -
list1:[{"name":"name1","srno":"srno1"},{"name":"name2","srno":"srno2"}]
list2:[{"location":"location1","srno":"srno2"},{"location":"location2","srno":"srno1"}]
这两个列表有一个共同点,即#srno'这是字符串类型。 我想在srno上映射列表并合并这两个列表,以便对应于' srno:1'从list1到' srno:1' to list2。
所以文件列表会是这样的:
[{"name":"name1","srno":"srno1","location":"location2"},{"name":"name2","srno":"srno2","location":"location2"}]
如何使用scala对这两个列表进行排序和合并以形成单个列表?
修改 将存在一对一的对应关系,即srno1将在两个列表中仅出现一次
答案 0 :(得分:1)
假设您正在将json转换为案例类,您可以使用理解来执行此操作。
case class NameSrno(name: String, srno: String)
case class SrnoLoc(srno: String, location: String)
case class All(name: String, srno: String, location: String)
def merge(nsl: List[NameSrno], sll: List[SrnoLoc]): List[All] = {
for {
ns <- nsl
sl <- sll
if (ns.srno == sl.srno)
} yield All(ns.name, ns.srno, sl.location)
}
用法:
val nsl = List(NameSrno("item1", "1"), NameSrno("item2", "2"))
val sll = List(SrnoLoc("1", "London"), SrnoLoc("2", "Tokyo"))
merge(nsl, sll)
//> res0: List[test.SeqOps.All] = List(All(item1,1,London), All(item2,2,Tokyo))