在列表中搜索具有相同日期的对象

时间:2012-04-08 13:30:48

标签: scala

我正在使用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?

2 个答案:

答案 0 :(得分:2)

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

使用utList.partition(ut => ut.time == dd.time)进行分区。

鉴于dd是DD的实例。

答案 1 :(得分:0)

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

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

如果您只有一个DD实例someDd

utList partition {_.time == someDd.time}