计算任何项目在Scala列表中显示的次数

时间:2016-08-08 20:34:47

标签: scala

我有以下列表:

val list = List("this", "this", "that", "there", "here", "their", "where")

我想计算出“此”或“那个”出现的次数。我可以这样做:

 list.count(_ == "this") + list.count(_ == "that")

有最简洁的方法吗?

3 个答案:

答案 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")