溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Scala實現(xiàn)worldcount功能

發(fā)布時間:2021-12-09 09:21:57 來源:億速云 閱讀:181 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“如何使用Scala實現(xiàn)worldcount功能”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何使用Scala實現(xiàn)worldcount功能”吧!

新建ScalaWorldCount對象:

package com.ruozedata.day4

object ScalaWorldCount {

  def main(args: Array[String]): Unit = {

    val lines = List("hello ruoze hello jepson","hello ruoze hello jepson hello china")

    /**第一種方法

      * flatMap=map+flatten  lines.flatMap 將數(shù)據(jù)壓扁

      *  flatMap(_.split(" "))   拿到每一個元素(字符串),按照空格切割

      *  map((_,1))  將單詞出現(xiàn)一次和1放在一起(放入元組)

      *  groupBy(_._1) 第一個_ 表示List中的每一個元組,取元組中的某一個元素用._n,即按照元組中的某一元素分組,返回是一個map

      *  map(t=>(t._1,t._2.size)) 第一個_ 拿到一個對偶元組,取元組中的第一個元組。_._2.size即是取對偶元組第二個的個數(shù)。

      *

      */

    val wc = lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(t=>(t._1,t._2.size)).toList // .sortBy(_._2).reverse

    for(j <-  0 until wc.length) println(wc(j)+"\t")

    /** 第二種方法

      * foldLeft(0)(_+_._2)第一個_表示初始值或者上一次累加的結(jié)果 中第二個_ ,表示拿到的每一個元組,第三個元組的中第n個值

      */

    val wc = lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2))

    for(i <- wc) println(i+"\t")

  }

}

運行結(jié)果:

(china,1)

(ruoze,2)

(jepson,2)

(hello,5)

Process finished with exit code 0

感謝各位的閱讀,以上就是“如何使用Scala實現(xiàn)worldcount功能”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何使用Scala實現(xiàn)worldcount功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI