假设有单词数组: val arr = Array(“hello tom”,”hello jerry”,”hello hello”)需要对Array中的每个单词进行统计计数 Scala单词计数

Scala 对 Array中的每个单词进行统计计数

假设有单词数组:
val arr = Array(“hello tom”,”hello jerry”,”hello hello”)

需要对Array中的每个单词进行统计计数。

答案:

val arr = Array("hello tom","hello jerry","hello hello")
var result = arr.flatMap(_.split("\\s")).map((_,1)).groupBy(_._1).map(t=>(t._1,t._2.size))
println(result)

分步解析上述代码:

1.按空格拆分成字符串

//var result1=arr.flatMap(_.split("\\s"))
var result1=arr.flatMap(x=>x.split("\\s"))
println(result1.toBuffer)
println(result1)

在这里插入图片描述
2.将字符串映射成键值对的形式,value放1,为了后期计算

//var result2=result1.map((_,1))
var result2=result1.map(x=>(x,1))
println(result2.toBuffer)
println(result2)

在这里插入图片描述
3.按key分组

//var result3=result2.groupBy(_._1)
var result3=result2.groupBy(x=>x._1)
println(result3.get("hello").get.toBuffer)

在这里插入图片描述
4.查看数据类型格式,为了思路清晰

for((k,v)<- result3){
      println(k+"\t"+v.toBuffer)
    }

在这里插入图片描述
5.将上面得到的数据遍历,按key和value的长度映射成新Map

val result4=result3.map(x=>(x._1,x._2.length))
println(result4)

在这里插入图片描述

发布了41 篇原创文章 · 获赞 59 · 访问量 2776

猜你喜欢

转载自blog.csdn.net/lljazxx/article/details/103039931