scala教程:实现wordcount

案例说明

有一个list,有3个元素,内容如下图左1,统计每个名字出现的次数

步骤:

  1. 将每一个元素,按照空格拆分字符串,结果如上图左2
  2. 根据元素进行分组,结果如上图左3
  3. 对分组后的元素,统计其个数,结果如上图右1

代码

val l=Array("李雷 韩梅梅","李雷 lili","韩梅梅 lucy")
//根据空格拆分字符串
val l2=l.flatMap(_.split(" "))
l2.foreach(println)
println("---------------")
//根据元素进行分组
val m=l2.groupBy(s=>s)
l2.foreach(println)
println("---------------")

//对分组后的元素,统计其个数
val m2=m.map( e =>(e._1,e._2.size))
m2.foreach(println)

解释

val l4: Map[String, Int] = m.map( e =>(e._1,e._2.size))

根据lambda表达式返回的类型,决定 m.map() 的返回类型

当lambda表达式返回类型是 2个元素的tuple 时,m.map() 的返回类型是 Map[Sring,Int]

lambda表达式返回类型是其他类型时,m.map() 的返回类型是 immutable.Iterable


原文出处:/show_1IX1K6NjMHPx.html