1.深入test.txt这个文件,得到一个长长的字符串:“ i am studying scala, i like scala"
def main(args: Array[String]): Unit = {
val content = "I am studying scala. I like scala.";
2.把字符串拆分为单词
val list = content.split(" ");
list.foreach(ele => println(ele))
3.统计每个单词出现的次数
val map1 = scala.collection.mutable.Map("I" => 1,"am" => 2)
list.foreach(word =>{
//println(word,map1.contains(word))
if(map1.contains(word)){
map1(word) += 1
} else{
map1(word) = 1
// 4. 对结果降序
// Map本身是无序的,它没有排序的功能
// 如果要对它的内容进行排序,那么,我们要把它转换成可以排序的集合: List
// sortBy排序:根据元组的第二个值
//
val wordlist = map1.tolist.sortBy(_._2).reverse
wordList.foreach(el => println(el))
整体
object words01 {
def main(args: Array[String]): Unit = {
val content = scala.io.Source.fromFile("test.txt").mkString
//2
val list = content.split("\W+").map(word=>word.toLowerCase)
list.foreach(ele => println(ele))
val map1 = scala.collection.mutable.Map[String, Int]()
list.foreach(word =>{
// 检查它在map是否存在
//println(word,map1.contains(word))
if(map1.contains(word)){
map1(word) += 1 // 存在: 把它的值+1
} else{
map1(word) = 1
}
})
// 4. 对结果降序
// Map本身是无序的,它没有排序的功能
// 如果要对它的内容进行排序,那么,我们要把它转换成可以排序的集合: List
// sortBy排序:根据元组的第二个值
//
val wordList = map1.toList.sortBy(_._2).reverse
wordList.foreach(el => println(el))
// 5. 把结果输出到一个文件中
val fileWriter = new FileWriter("result.txt")
wordList.foreach(el => {
fileWriter.write(s"${el._1}- ${el._2} \n")
})
fileWriter.close()