Iterieren von Karten in Scala
Turm
Nehmen wir an, ich habe ein Array von Karten:
val m1 = Map("key" -> Array("aa","bb"), "v1" -> 1 , "v2" -> 3)
val m2 = Map("key" -> Array("cc","bb"), "v1" -> 2 , "v2" -> 4)
val colection = Array(m1,m2)
Ich möchte eine neue Sammlung erstellen, val colection2
wenn der Wert von v2
from collection
kleiner als 4 ist. Ergebnis ist eine neue Sammlung, die m1
nur enthält .
Ich habe es versucht foreach
und filter
, aber ich kann nicht auf den Wert von v2
zum Beispiel zugreifen :val collection2 = collection.filter{case (key,v1,v2) => (v2 < 4) }
Turm
Meine Antwort nach einigen Arbeiten zum Thema:
val collection2 = for ( m <- collection if m("v2").asInstanceOf[Int] < 4) yield m