如何在 Scala 中打印数字的出现?
How to print occurrences of numbers in Scala?
我是 Scala 新手。
请帮助我获得预期的输出
val list =List(1,123,2,3,123,1,2)
val result = aList.map(x => aList.count(_==x)))
println(result.distinct)
预期输出:1 的出现次数为 2
2出现的次数是2
123出现的次数是2
3出现的次数是1
groupBy
对此效果很好。它 returns 由鉴别器函数分组的 Map
元素,在这种情况下是元素本身,也称为 identity
scala.collection.immutable.Map[Int,List[Int]] = HashMap(1 -> List(1, 1), 2 -> List(2, 2), 3 -> List(3), 123 -> List(123, 123))
我们可以从中工作。
然后将每个 key/value 对映射到一个键和值 List
中的 size
,这会给出您要查找的内容。
list.groupBy(identity).map({case(k,v) => (k, v.size)})
scala.collection.immutable.Map[Int,Int] = HashMap(1 -> 2, 2 -> 2, 3 -> 1, 123 -> 2)
我们可以使用 Scala 2.13 groupMapReduce
正如 LuisMiguelMejíaSuárez 所说。
list.groupMapReduce(identity)(_ => 1)(_ + _)
类似于上面的方法,第一个参数被赋予identity
函数来对值进行分组,第二个参数将每个值映射到1
,第三个参数被赋予一个函数_ + _
将它们加在一起。
这给出了与原始方法类似的答案:
scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 2 -> 2, 3 -> 1, 123 -> 2)
我是 Scala 新手。 请帮助我获得预期的输出
val list =List(1,123,2,3,123,1,2)
val result = aList.map(x => aList.count(_==x)))
println(result.distinct)
预期输出:1 的出现次数为 2 2出现的次数是2 123出现的次数是2 3出现的次数是1
groupBy
对此效果很好。它 returns 由鉴别器函数分组的 Map
元素,在这种情况下是元素本身,也称为 identity
scala.collection.immutable.Map[Int,List[Int]] = HashMap(1 -> List(1, 1), 2 -> List(2, 2), 3 -> List(3), 123 -> List(123, 123))
我们可以从中工作。
然后将每个 key/value 对映射到一个键和值 List
中的 size
,这会给出您要查找的内容。
list.groupBy(identity).map({case(k,v) => (k, v.size)})
scala.collection.immutable.Map[Int,Int] = HashMap(1 -> 2, 2 -> 2, 3 -> 1, 123 -> 2)
我们可以使用 Scala 2.13 groupMapReduce
正如 LuisMiguelMejíaSuárez 所说。
list.groupMapReduce(identity)(_ => 1)(_ + _)
类似于上面的方法,第一个参数被赋予identity
函数来对值进行分组,第二个参数将每个值映射到1
,第三个参数被赋予一个函数_ + _
将它们加在一起。
这给出了与原始方法类似的答案:
scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 2 -> 2, 3 -> 1, 123 -> 2)