我有两个列表:
val generalInfo = List[GeneralInfo]
val countInfo = List[CountInfo]
case class GeneralInfo(id: String, source: String, languages: Array[String], var count: BigDecimal)
case class CountInfo(id: String, count: BigDecimal)
每个CCD_ 1对象都用CCD_ 2初始化;
当它们的id相同时,我需要用CountInfo
对象的计数值填充GeneralInfo
对象中的计数变量。(并非GeneralInfo
列表中的所有id都在CountInfo
列表中(
我是Scala的新手,有没有什么方法可以在不使用字典的情况下优雅地完成它?
如果您知道存在一对一的关系,您可以遍历每个CountInfo
,找到相应的GeneralInfo
对象,并为该GeneralInfo
0设置count
。
countInfo.foreach(c => generalInfo.find(_.id == c.id).map(_.count = c.count))
如果一个id可以由多个GeneralInfo
对象共享,请使用filter
而不是find
:
countInfo.foreach(c =>
generalInfo.filter(_.id == c.id).foreach(_.count = c.count)
)
你也可以用另一种方式:
generalInfo.foreach(g => countInfo.find(_.id == g.id).map(c => g.count = c.count))
Scastie 演示