scala本地wordcount的程序编写
2016-05-12 13:34
459 查看
主要是在本地编写一个计算文件中单词出现次数的工具,一下是代码:
import scala.actors.{Future, Actor}
import scala.collection.mutable
import 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 tom
jerry rose
lily jerry words.txt
tom jerry
tom Chandler
jerry rose
import scala.actors.{Future, Actor}
import scala.collection.mutable
import 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 tom
jerry rose
lily jerry words.txt
tom jerry
tom Chandler
jerry rose
相关文章推荐
- Windows下Scala环境搭建
- Windows7下安装Scala 2.9.2教程
- Scala代码实现列出Hadoop 文件夹下面的所有文件
- ClassNotFoundException:scala.PreDef$
- sbt创建web项目
- XML 文件解析--含Unicode字符的XML文件
- Scala 学习随笔
- Scala 小程序记录(学习期间的代码片段)
- Spark机器学习(二) 局部向量 Local-- Data Types - MLlib
- Spark机器学习(三) Labeled point-- Data Types
- 分分钟掌握快速排序(Java / Scala 实现)
- Scala极速入门
- Spark初探
- Scala实现REST操作
- Scala method call syntax
- 关于Scala多重继承的菱形问题
- Scala 高阶函数(high-order function)剖析
- Scala Monad Design Pattern
- Spray.io搭建Rest服务
- Spray.io搭建Rest — 支持Twirl模板并部署