scala本地wordcount的程序编写

来源:互联网 发布:js实现老虎机 编辑:程序博客网 时间:2024/05/17 00:11

主要是在本地编写一个计算文件中单词出现次数的工具,一下是代码:

import scala.actors.{Future, Actor}import scala.collection.mutableimport scala.collection.mutable.{ListBuffer, ArrayBuffer}import scala.io.Source/** * mhc * Created by Administrator on 2016/5/12. */case class startTask(fileName: String)case class stopTask()case class resultSet(result: Map[String, Int])class Task extends Actor {  override def act(): Unit = {    loop {      react {        case startTask(fileName: String) => {          // 开始任务          val lines = Source.fromFile(fileName).mkString          val arr = lines.split("\r\n")          val result = arr.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.length)          sender ! resultSet(result)        }        case stopTask => {          exit()        }      }    }  }}object Task {  def main(args: Array[String]) {    val replySet = new mutable.HashSet[Future[Any]]    var list = new ListBuffer[resultSet]    val files = Array("D://words.txt", "D://newword.txt")    val task = new Task    task.start()    for (s <- 0 until files.length) {      replySet += (task !! startTask(files(s))) // 发送消息    }    for (set <- replySet) {      list += set.apply().asInstanceOf[resultSet]    }    val result = list.map(_.result).flatten.groupBy(_._1).mapValues(x => x.foldLeft(0)(_ + _._2))    println(result)  }}
接下来是我的两个外部txt:

newword.txt:

chandler tomjerry roselily jerry
words.txt

tom jerrytom Chandler jerry rose



0 0
原创粉丝点击