Scala列表中元素的出现次数

时间:2018-04-27 15:47:40

标签: scala list functional-programming

为了简单起见,让我想象一下我有以下输入:

List(List("A", "A"), List("A", "B"), List("B", "C"), List("B", "C"))

如何以这种方式对列表中的元素进行分组,以便我知道它们中有多少列表。例如,跟随 mapValues 函数的输出只是为了说明我的意思是,之前输入的结果应该是这样的:

Map("A" -> 2, "B" -> 3, "C" -> 2)

为了确保我明确表达我的意思,解释结果的方法是说" A" 出现在2个子列表中(无论它出现在特定子列表中的次数," B" 出现在3个子列表中," C&# 34; 在2中。我只想要一种方法来映射每个单独元素存在多少个不同的子列表。

2 个答案:

答案 0 :(得分:2)

无视绩效,这可行:

ArrayList

答案 1 :(得分:0)

你也可以使用fold操作来喜欢这个

list.flatten.foldLeft(Map.empty[String, Int])((map, word) => map + (word -> (map.getOrElse(word,0) + 1)))
//scala> res2: scala.collection.immutable.Map[String,Int] = Map(A -> 3, B -> 3, C -> 2)