如何计算Map中元素的出现次数?
示例
val myMap = Map("word1" -> "foo", "word3" -> "word4", "word5" -> "foo")
myMap contains "foo" count //???
// returns 2
发布于 2014-06-16 00:08:00
您只需在谓词中使用count
:
myMap.count({ case (k, v) => v == "word1" })
另一种选择是:
myMap.values.count(_ == "word1")
甚至:
myMap.count(_._2 == "word1") // _2 is the second tuple element
注意:这是值,而不是键。钥匙是独一无二的。
发布于 2014-06-16 00:20:41
通常,如果要计数Map
中发生的事件,可以按值分组,然后转换分组子映射以获得它们的大小。
scala> val occurrences = myMap groupBy ( _._2 ) mapValues ( _.size )
occurrences: scala.collection.immutable.Map[String,Int] = Map(word4 -> 1, foo -> 2)
如果您需要对每个条目进行计数,而不仅仅是一个值,这是非常方便的。否则@Ven的解决方案更有效
发布于 2014-06-16 00:33:39
还有另一种方式,
myMap.values.filter { _ == "foo" }.size
https://stackoverflow.com/questions/24239009
复制