2016-06-06 12 views
1

Ich beginne mit Scala und derzeit versuche ich, einen Algorithmus zu schreiben, der zwei Listen mit Kalenderzeiten erhält und es die passenden Zeiten auswählen muss.Match zwei Kalenderlisten in Scala

Zum Beispiel die erste Liste hat folgende Werte (aus Gründen der Einfachheit nur die Zeiten, ich werde) setzen:

[12:00, 00.50, 13.40, 14.30, 15 : 20, 16:10, 17:00, 17.50, 18.40]

Die zweite Liste hat die folgenden Werte:

[13.20, 13.40, 14:30, 15: 20, 16:10, 16:30]

Ich möchte eine Liste mit folgenden Werten erhalten:

[13:40, 14:30, 15:20, 16:10]

Diese Werte repräsentieren alle 50-Minuten-Intervalle, die der ersten und der zweiten Liste entsprechen.

Ich könnte eine iterative Methode verwenden, um dieses Problem zu lösen. Ich würde nur die zwei Listen durchgehen und sehen müssen, ob die Werte meinen Bedürfnissen entsprechen, aber es wäre nicht sehr funktionell und ich versuche, guten Scala-Code zu schreiben. Ich kann jedoch nicht mit einer Idee kommen, um dieses Problem funktional zu lösen.

Kann mir bitte jemand mit diesem Problem helfen?

Antwort

4

Verwenden Sie die intersect-Funktion unter List. Er berechnet die Multiset-Schnittmenge der Listen. Alle Elemente, die in beiden Listen vorhanden sind, werden zur Ergebnisliste hinzugefügt.

val list1 = List("12:00", "12:50", "13:40", "14:30", "15:20", 
       "16:10", "17:00", "17:50", "18:40") 

val list2 = List("13:20", "13:40", "14:30", "15:20", "16:10", "16:30") 

val matched = list1.intersect(list2) // Gives List(13:40, 14:30, 15:20, 16:10) 
+1

Ihre Antwort könnte nicht besser sein. Danke, Mann. – undisp

Verwandte Themen