Scala 需要合并具有相同日期的地图和列表

Scala 需要合并具有相同日期的地图和列表,scala,Scala,我有一个映射,其中key=LocalDateTime,value=Group def someGroup(/.../): List[Group] = { someCode.map { /.../ }.map(group => (group.completedDt, group)).toMap /.../ } 还有List[Group],其中Group(completedDt:LocalDateTime,cost:Int)总是cost=0 我所拥有的一个例子

我有一个映射,其中key=LocalDateTime,value=Group

def someGroup(/.../): List[Group] = {
    someCode.map {
    /.../
    }.map(group => (group.completedDt, group)).toMap
    /.../
}
还有List[Group],其中Group(completedDt:LocalDateTime,cost:Int)总是cost=0

我所拥有的一个例子:

地图:
[(2021-04-01T00:00:00.000500),(2021-04-03T00:00:00.0001000),(2021-04-05T00:00:00.000750)]

列表:
((2021-04-01T00:00:00.000,0),(2021-04-02T00:00:00.000,0),(2021-04-03T00:00:00.000,0),(2021-04-04T00:00:00.000,0),(2021-04-05T00:00:00.000,0))

预期结果是: 列表
((2021-04-01T00:00:00.000,500),(2021-04-02T00:00:00.000,0),(2021-04-03T00:00:00.000,1000),(2021-04-04T00:00:00.000,0),(2021-04-05T00:00:00.000,750))


提前谢谢

假设如果两者都出现了一段时间,您希望合并成本:

type Group = (LocalDateTime, Int)  // completedDt, cost
val groupMap: Map[LocalDateTime, Group] = ???
val groupList: List[Group] = ???

val combined = 
  groupList.foldLeft(groupMap) { (acc, group) =>
    val completedDt = group._1
    
    if (acc.contains(completedDt)) {
      val nv = completedDt -> (acc(completedDt)._2 + group._2)
      acc.updated(completedDt, nv)
    } else acc + (completedDt -> group)
  }.values.toList.sortBy(_._1)  // You might need to define an Ordering[LocalDateTime]
你问题中的符号使我认为
只是一对,而不是
案例类
。还值得注意的是,我不确定地图是
map[LocalDateTime,Group]
还是
map[LocalDateTime,Int]
(根据定义,一组
Group
)能为您带来什么

编辑:如果您有
组的集合的常规集合,则可以

val groupLists: List[List[Group]] = ???

groupList.foldLeft(Map.empty[LocalDateTime, Group]) { (acc, lst) =>
  lst.foldLeft(acc) { (m, group) =>
    val completedDt = group._1

    if (m.contains(completedDt)) {
      val nv = completedDt -> (acc(completedDt)._2 + group._2)
      m.updated(completedDt, nv)
    } else m + (completedDt -> group)
  }
}.values.toList.sortBy(_._2)

你好谢谢你的回复!如果我们有两个列表,而不是一个有列表的地图,会怎么样?