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)