1.创建一个文件 写入英语
2.拆分为单词
- 使用正则表达式W+ 去拆分字符串 结果是一个list
* \W表示一个非字符(!. ? 空格)
3.统计每个单词出现的次数
-
新建一个Map("I" -> 0)
-
对于list中的每个单词
-
检查他在Map中是否存在?
println(word.map1.contains(word))
4.对结果排序(降序排列)
-
Map本身是无序的 它没有排序功能
-
如果对它的内容进行排序 那么 我们要把它转换成可以排序的集合:List
-
sortBy排序根据元祖的第二个值 -
reverse翻转
5.把结果输出到一个新的文件中
import java.io.FileWriter
import scala.reflect.internal.util.NoSourceFile.content
object word02 {
def main(args: Array[String]): Unit = {
val content = scala.io.Source.fromFile("test.log").mkString;
println(content)
// 2.拆分为单词
val list = content.split("\W+ ").map(word=>word.toLowerCase) // 使用正则表达式W+ 去拆分字符串 结果是一个list
// \W表示一个非字符(!. ? 空格)
//list.foreach(ele => println(ele))
//3.统计每个单词出现的次数
// 新建一个Map("I" -> 0)
val map1 = scala.collection.mutable.Map[String,Int]()
// 对于list中的每个单词
list.foreach(word =>{
//检查他在Map中是否存在?
//println(word.map1.contains(word))
if(map1.contains(word)){
map1(word)+=1 //存在 把他的值+1
}else{
map1(word)=1 //不存在 把他的值设为1
}
})
//4.对结果排序(降序排列)
//Map本身是无序的 它没有排序功能
//如果对它的内容进行排序 那么 我们要把它转换成可以排序的集合:List
//sortBy排序 根据元祖的第二个值
//reverse翻转
val wordList = map1.toList.sortBy(_._2).reverse
//5.把结果输出到一个新的文件中
val fileWriter = new FileWriter("result.txt")
wordList.foreach(el => {
fileWriter.write(s"${el._1} - ${el._2 }\n")
})
fileWriter.close()
}
}