Ich habe eine Scala-Karte und möchte testen, ob ein bestimmter Wert in der Karte vorhanden ist.
myMap.exists( /*What should go here*/ )
scala
dictionary
collections
Nabegh
quelle
quelle
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
:quelle
Sie stellen einen Test bereit, bei dem einer der Kartenwerte bestanden wird, d. h
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.
quelle
Was ist damit:
Ergibt,
true
wenn die Karte einenc
Wert enthält .Wenn Sie darauf bestehen, Folgendes zu verwenden
exists
:quelle
values
erstellt eine neue,Iterable
so dass Sie wahrscheinlich besser dran sindmap.valuesIterator.contains('c')
(obwohl das nicht so einfach ist wiemap.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
quelle