0

我正在使用 find 搜索列表,使用模式匹配查找,过滤器,foldLeft(以及使用 Joda 进行日期相等)。

我需要搜索对象列表并找到与不同对象具有相同日期的匹配项。

case class DD(time: Date, value: Double)
case class UT(time: Date, name: String, value: Double)

给定一个 UT 列表

var sdf = new SimpleDateFormat("yyyy-MM-dd")
var utList = Seq(UT(sdf.parse("2012-02-11"), "adf", 1), UT(sdf.parse("2012-02-13"), "adf", 2),UT(sdf.parse("2012-02-16"), "addf", 3)

查找具有匹配 DD.time 的所有 UT 的最有效方法?

或者,更好的是,将列表拆分为两个子列表,其中一个列表不包含匹配项,另一个列表包含具有匹配 DD.time 的 UT?

4

2 回答 2

2

用于utList.filter(ut => ut.time == dd.time)获取所有匹配时间

用来utList.partition(ut => ut.time == dd.time)分区。

鉴于 dd 是 DD 的一个实例。

于 2012-04-08T14:06:58.750 回答
0

我想我错过了一些东西,但是......:

val (matchingDate, notMatchingDate) =
  utList partition {_.time == sdf.parse("2012-02-13")}

如果您只有一个DD实例someDd

utList partition {_.time == someDd.time}
于 2012-04-08T14:03:48.820 回答