为了简单起见,让我想象一下我有以下输入:
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中。我只想要一种方法来映射每个单独元素存在多少个不同的子列表。
答案 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)