scala - 创建 Map 为每个 List 元素保留 # of appearance

标签 scala collections

<分区>

我是 Scala 新手。

如果我有以下 List:

val ls = List("a", "a", "a", "b", "b", "c")

如何创建一个 Map 来保存列表中每个元素的出现次数?

例如,上面列表的 Map 应该是:

Map("a" -> 3, "b" -> 2, "c" -> 1)

最佳答案

list.foldLeft(Map[String, Int]() withDefaultValue 0) { (m, x) => m + (x -> (m(x) + 1)) }

实际片段:

scala> val list = List("a", "a", "b", "c", "c", "a")
list: List[String] = List(a, a, b, c, c, a)

scala> list.foldLeft(Map[String, Int]() withDefaultValue 0) { (m, x) => m + (x -> (1 + m(x))) }
res1: scala.collection.immutable.Map[String,Int] = Map(a -> 3, b -> 1, c -> 2)

(直接基于Count occurrences of each element in a List[List[T]] in Scala)

关于scala - 创建 Map 为每个 List 元素保留 # of appearance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794090/

相关文章:

java - 如何从 ArrayList 中删除重复的元素?

java - 它们是 Java map 的任何体面的磁盘实现吗?

json - Circe 和 Scala 的枚举类型

scala - 从spark中的json模式动态生成df.select语句

arrays - 如何在MongoDB中批量迭代?

java - HashMap 键不是随机的

Java/Scala 有界泛型和类型推断不匹配

scala - 参数化类中的类型不匹配 - 但为什么呢?

scala - Play什么时候加载application.conf?

python:从收集计数器获取百分比