如何检查Map中是否存在键或值?
在Map中检查键或值是否存在有几种不同的选项,具体取决于你的意思。
如果你的意思是“值”是指键值对,则可以使用以下代码:
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"
)更短,但稍长的形式更明确地说明你想要发生的情况。
还值得一提的是,为了测试键的存在,库提供了myMap.contains("fish")。
- 确实。我只是使用了“exists”,但这个很重要(因为这是你应该使用的方式),所以我已经对答案进行了修改。
问题的出现原因是在Scala中,Map的exists方法接收一个谓词函数作为参数,该函数对该Map的元素进行测试并返回一个布尔值,指示是否存在满足谓词的元素。然而,在测试键或值是否存在时,我们可能会遇到一些困惑。
解决方法是使用exists方法的参数来检查键或值是否存在。在给定的示例中,通过传递一个谓词函数来检查键是否存在。例如,mymap.exists(_._1 == 7) 将返回true,因为Map中存在键为7的元素。同样,我们也可以通过传递一个谓词函数来检查值是否存在。例如,mymap.exists(x => x._2 == "lala") 将返回true,因为Map中存在值为"lala"的元素。
要检查Map中的键或值是否存在,我们可以使用Map的exists方法,并通过传递适当的谓词函数来进行测试。谓词函数可以检查键或值是否满足我们的条件,并返回相应的布尔值。