请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Scala实现WordCount

我听说WordCount用scala不是只需要两行吗,为什么我…

import java.io.FileWriter
import scala.collection.mutable
object MyWCApp extends App{
	val contents=
		"""hello,world,hello,world,count,world
		  |xixixi,hehehe,hahaha,world,count,count
		  |hello""".stripMargin
	//val contents =scala.io.Source.fromFile("input/hell.txt").mkString
	//println(contents)
	val tmp = mutable.ListBuffer[(String,Int)]()
	for(line<-contents.split("\r\n")){
		tmp++=List(line.trim).flatMap(_.split(",")).map(x=>(x,1))
	}
	val mp = mutable.Map[String,Int]()
	for((k,v)<-tmp){
		if (mp.getOrElse(k, -1) != -1) {
			mp(k) = v + mp(k)
		} else {
			mp(k) = 1
		}
	}
	val b= new FileWriter("output/ans.txt")
	for ((k,v)<-mp){
		b.write(s"$k\t$v")
		b.write(10)
	}
	b.close()
}

正在回答

2回答

你这写的什么鬼。。。这么复杂

0 回复 有任何疑惑可以回复我~
  • 提问者 Witness2017 #1
    我也觉得太麻烦了,,该从哪里改它呢。。
    回复 有任何疑惑可以回复我~ 2019-05-26 18:32:43
  • Michael_PK 回复 提问者 Witness2017 #2
    这种写法百度一搜一堆的呢,自己搜下
    回复 有任何疑惑可以回复我~ 2019-05-26 22:15:58
  • 提问者 Witness2017 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-26 23:01:33
提问者 Witness2017 2019-05-26 23:03:17
import java.io.FileWriter
import scala.collection.mutable
object MyWCApp extends App{
  val contents=
     """hello,world,hello,world,count,world
       |xixixi,hehehe,hahaha,world,count,count
       |hello""".stripMargin
  //val contents =scala.io.Source.fromFile("input/hell.txt").mkString
  val a = List(contents).flatMap(_.split("\r\n")).flatMap(_.split(",")).map((_,1))
        .groupBy(_._1).map(t=>(t._1,t._2.map(_._2).reduce(_+_)))//.foreach(println)
  val fd = new FileWriter("output/ans.txt")
  println(a)
  a.foreach(t=>fd.write(s"${t._1}\t${t._2}\n"))
  fd.flush()
  fd.close()

最终版!


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号