2012-04-08 16 views
0

Ich spinne ein wenig beim Suchen einer Liste mit find, finde mit Mustervergleich, Filter, foldLeft (sowie mit Joda für Datum Gleichheit).Suche in einer Liste nach Objekten mit demselben Datum

Ich muss eine Liste von Objekten suchen und Übereinstimmungen mit demselben Datum als ein anderes Objekt finden.

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

eine Liste von UTs

Da
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) 

effizienteste Weg, alle UTs zu finden, mit DD.time passend?

Oder, noch besser, teilen Sie die Liste in zwei Unterlisten, wobei eine Liste keine Übereinstimmungen enthält und die andere Liste UTs mit passender DD.time enthält?

+2

Es ist nicht klar (für mich), was Sie mit "passender DD.time" meinen. Haben Sie eine Instanz von 'DD' und möchten Sie die' UT's mit Maschinen 'time' Feldern? –

Antwort

2

Verwendung utList.filter(ut => ut.time == dd.time) alle passenden Zeit zu bekommen

Verwenden Sie utList.partition(ut => ut.time == dd.time) Partition.

Gegeben, dass dd eine Instanz von DD ist.

0

Ich glaube, ich bin etwas fehlt, aber ...:

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

Wenn Sie nur eine einzige Instanz DDsomeDd:

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