方法一:
package ScalaStudy_day02
object WordCount {
def main(args: Array[String]): Unit = {
val lines = List("hello python", "hello java", "hello scala", "hello c++ and scala")
// 统计每个单词的个数
// 每一行数据进行切分,得到一个一的单词 List(Array(word1,word2))
val words:List[String] = lines.flatMap(_.split(" "))
// 切分得到数组 放到list中 flatMap功能压平’
println(words)
// list((word,1)) 变换
val tupleList:List[(String,Int)] = words.map((x:String)=>(x,1))
println(tupleList)
// 根据tuple的第一个元素进行分组 groupBy 对相同的第一个元素进行分组
val grouped:Map[String,List[(String,Int)]] = tupleList.groupBy(_._1)
/**
* 第一个单词元祖一样的放到一起
*/
for (elem <- grouped)
println(elem)
// 聚合,相同key的元素进行聚合
// mapValues拿到键值对里的值 针对键值对类型元素进行操作,仅仅值进行操作 遍历元素
// 每次遍历拿到的是键值对里的值
val maped:Map[String,Int] = grouped.mapValues(_.size)
println(maped)
// 对结果进行排序
val list = maped.toList
println(list)
// 对list进行排序 通过单词出现次数
// list.sortWith(_._2>_._2)
val sorted = list.sortWith((x:(String,Int),y:(String,Int))=>x._2>y._2)
println(sorted)
}
}
"D:\Program Files\Java\jdk1.8.0_171\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.1\lib\idea_rt.jar=56852:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;F:\IDEAworkpace\ScalaTest\target\classes;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-actors\jars\scala-actors-2.11.12.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.11.12.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-reflect\jars\scala-reflect-2.11.12.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-actors\srcs\scala-actors-2.11.12-sources.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-library\srcs\scala-library-2.11.12-sources.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-reflect\srcs\scala-reflect-2.11.12-sources.jar" ScalaStudy_day02.WordCount
List(hello, python, hello, java, hello, scala, hello, c++, and, scala)
List((hello,1), (python,1), (hello,1), (java,1), (hello,1), (scala,1), (hello,1), (c++,1), (and,1), (scala,1))
(java,List((java,1)))
(c++,List((c++,1)))
(scala,List((scala,1), (scala,1)))
(python,List((python,1)))
(hello,List((hello,1), (hello,1), (hello,1), (hello,1)))
(and,List((and,1)))
Map(java -> 1, c++ -> 1, scala -> 2, python -> 1, hello -> 4, and -> 1)
List((java,1), (c++,1), (scala,2), (python,1), (hello,4), (and,1))
List((hello,4), (scala,2), (java,1), (c++,1), (python,1), (and,1))
Process finished with exit code 0