Scala写WordCount,查看本地的前20条数据,并统计出现的次数,并且是多线程

xiaoxiao2021-02-28  60

import scala.actors.{Actor, Future}import scala.collection.mutableimport scala.io.Sourcecase class ST(fName:String)case class RT(re:Map[String,Int])class Awc extends Actor{override def act(): Unit = {loop({react({case ST(fName) => {val lines = Source.fromFile(fName).mkStringval map = lines.split("\t\n").flatMap(_.split(" ")).map((_,1)).groupBy(_._1).mapValues(_.size)sender ! RT(map)}})})}}object WordCount {def main(args: Array[String]): Unit = {val arr = Array("E:\\a.txt","E:\\b.txt")val f = new mutable.ListBuffer[Future[Any]]for (fname <- arr){val awc = new Awcawc.start()f += awc !! ST(fname)}val t = new mutable.ListBuffer[RT]while (f.size > 0){for (fu <- f){if (fu.isSet){val ft = fu.apply()val rt = ft.asInstanceOf[RT]t += rtf -= fu}}}t.flatMap(_.re).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2)).toList.sortBy(_._2).reverse.take(20).foreach(println(_))}}
转载请注明原文地址: https://www.6miu.com/read-2625235.html

最新回复(0)