将信息从一个列表合并到另一个Scala

时间:2020-07-10 16:16:24

标签: scala functional-programming

我有两个列表:

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)

每个GeneralInfo对象都用count = 0初始化;

当它们的ID相同时,我需要用GeneralInfo对象的计数值填写CountInfo对象的count变量。 (并非GeneralInfo列表中的所有ID都在CountInfo列表中)

我对Scala还是很陌生,有什么方法可以不用字典就能优雅地做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您知道存在一对一的关系,则可以遍历每个CountInfo,找到对应的GeneralInfo对象,然后为该{{1 }}。

count

如果一个ID可以被许多GeneralInfo对象共享,请使用countInfo.foreach(c => generalInfo.find(_.id == c.id).map(_.count = c.count)) 代替GeneralInfo

filter

您也可以用另一种方式做到这一点:

find

Demo in Scastie