Antworten:
Es gibt verschiedene Möglichkeiten, je nachdem, was Sie meinen.
Wenn Sie mit "Wert" Schlüssel-Wert-Paar meinen , können Sie so etwas wie verwenden
myMap.exists(_ == ("fish",3))
myMap.exists(_ == "fish" -> 3)
Wenn Sie den Wert des Schlüssel-Wert-Paares meinen , können Sie dies
myMap.values.exists(_ == 3)
myMap.exists(_._2 == 3)
Wenn Sie nur den Schlüssel des Schlüssel-Wert-Paares testen möchten , dann
myMap.keySet.exists(_ == "fish")
myMap.exists(_._1 == "fish")
myMap.contains("fish")
Beachten Sie, dass die Tupelformulare (z. B. _._1 == "fish"
) zwar kürzer sind, die etwas längeren Formulare jedoch expliziter angeben, was geschehen soll.
Möchten Sie wissen, ob der Wert auf der Karte oder auf dem Schlüssel vorhanden ist? Wenn Sie den Schlüssel überprüfen möchten, verwenden Sie isDefinedAt
:
myMap isDefinedAt key
Sie stellen einen Test bereit, bei dem einer der Kartenwerte bestanden wird, d. h
val mymap = Map(9->"lolo", 7->"lala")
mymap.exists(_._1 == 7) //true
mymap.exists(x => x._1 == 7 && x._2 == "lolo") //false
mymap.exists(x => x._1 == 7 && x._2 == "lala") //true
Die ScalaDocs sagen über die Methode "Testet, ob ein Prädikat für einige der Elemente dieser unveränderlichen Karte gilt." Der Haken ist, dass es anstelle von zwei Parametern ein Tupel (Schlüssel, Wert) empfängt.
Was ist damit:
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c') //false
Ergibt, true
wenn die Karte einen c
Wert enthält .
Wenn Sie darauf bestehen, Folgendes zu verwenden exists
:
map.exists({case(_, value) => value == 'c'})
values
erstellt eine neue, Iterable
so dass Sie wahrscheinlich besser dran sind map.valuesIterator.contains('c')
(obwohl das nicht so einfach ist wie map.exists(_._2 == 'c')
!)
Beachten Sie gemäß den obigen Antworten, dass exist () erheblich langsamer ist als enthält () (ich habe ein Benchmarking mit einer Map durchgeführt, die 5000 Zeichenfolgenschlüssel enthält, und das Verhältnis war ein konsistentes x100). Ich bin relativ neu in Scala, aber meine Vermutung ist vorhanden () iteriert über alle Schlüssel (oder Schlüssel, Wertetupple), während der zufällige Zugriff von Map verwendet wird