Scala编写分析代码的逻辑实现

方法一:

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

猜你喜欢

转载自blog.csdn.net/qq_41212491/article/details/87189514
今日推荐