我有以下列表:
val list = List("this", "this", "that", "there", "here", "their", "where")
我想计算出“此”或“那个”出现的次数。我可以这样做:
list.count(_ == "this") + list.count(_ == "that")
有最简洁的方法吗?
答案 0 :(得分:5)
您一次可以count
次多次出现。无需再拨打count
两次。
scala> list.count(x => x == "this" || x == "that")
res4: Int = 3
答案 1 :(得分:3)
scala> list.count(Set("this", "that").contains)
res12: Int = 3
如果您需要使用相同的大列表计算几个不同地方的单词:
val m = list.groupBy(identity).mapValues(_.size).withDefaultValue(0)
会为您提供方便Map
的所有计数,因此您可以
scala> m("this") + m("that")
res11: Int = 3
答案 2 :(得分:2)
非常相似的例子:
val s = Seq("apple", "oranges", "apple", "banana", "apple", "oranges", "oranges")
s.groupBy(identity).mapValues(_.size)
结果是
Map(banana -> 1, oranges -> 3, apple -> 3)
对于某些项目:
s.groupBy(identity).mapValues(_.size)("apple")