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