我有一个scala Map,想测试地图中是否存在某个值。
myMap.exists( /*What should go here*/ )
Answers:
根据您的意思,有几种不同的选择。
如果您是指“值”键值对,那么您可以使用类似
myMap.exists(_ == ("fish",3))
myMap.exists(_ == "fish" -> 3)
如果您表示键值对的值,则可以
myMap.values.exists(_ == 3)
myMap.exists(_._2 == 3)
如果您只想测试键值对的键,则
myMap.keySet.exists(_ == "fish")
myMap.exists(_._1 == "fish")
myMap.contains("fish")
请注意,尽管元组形式(例如_._1 == "fish"
)最终变短了,但是稍长的形式对要发生的事情更加明确。
您是否想知道值是否存在于地图或键上?如果要检查密钥,请使用isDefinedAt
:
myMap isDefinedAt key
那这个呢:
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c') //false
true
如果地图包含则产生收益c
值,则。
如果您坚持使用exists
:
map.exists({case(_, value) => value == 'c'})
values
创建一个新的,Iterable
所以您可能会更好map.valuesIterator.contains('c')
(尽管这并不容易map.exists(_._2 == 'c')
!)