Scala 的wordCount
使用java的方式统计单词的数量
val hashMap = new util.HashMap[String, Integer]()
val bufferedReader = new BufferedReader(new FileReader("data/words.txt"))
var line: String = bufferedReader.readLine()
while (line != null) {
val split: Array[String] = line.split(",")
for (word <- split) {
// 判断map集合中是否存在这个单词
if (hashMap.containsKey(word)) {
// 取出之前统计的结果
val count: Integer = hashMap.get(word)
// 在之前的基础上加一
hashMap.put(word, count + 1)
} else {
// 如果单词在hashMap中不存在一个一个进去
hashMap.put(word, 1)
}
}
line = bufferedReader.readLine()
}
println(hashMap)
使用scala的方式统计单词的数量
// 1、读取文件
val lines: List[String] = Source.fromFile("data/words.txt").getLines().toList
// 2、将一行中的多个单词拆分出来,每个单词一行
val words: List[String] = lines.flatMap(line => line.split(","))
/**
*
* groupBy: 指定一个字段进行分组
*
* 返回一个map集合
* map集合的key 是分组的字段
* map集合的values是组内所有的元素
*
*/
// 3、按照单词分组,将同一个单词分到同一个组内
val groupBuy: Map[String, List[String]] = words.groupBy((word: String) => word)
// 4、统计分组的单词数量
val wordCount: Map[String, Int] = groupBuy.map(kv => {
// key
val word: String = kv._1
// 组内所有单词
val values: List[String] = kv._2
// 计算单词的数量
val count: Int = values.length
// 返回结果
(word, count)
})
wordCount.foreach(println)
链式调用(spark)
Source.fromFile("data/words.txt")
.getLines()
.toList
.flatMap(_.split(",")) // 将一行转换成多行
.groupBy(w => w) // 按照单词分组
.map(kv => (kv._1,kv._2.length)) // 统计单词的数量
.foreach(println)
import java.io.{BufferedReader, FileReader}
import java.util
import scala.io.Source
object wordCount {
def main(args: Array[String]): Unit = {
/**
* 使用java的方式统计单词的数量
*
*/
val hashMap = new util.HashMap[String, Integer]()
val bufferedReader = new BufferedReader(new FileReader("data/words.txt"))
var line: String = bufferedReader.readLine()
while (line != null) {
val split: Array[String] = line.split(",")
for (word <- split) {
// 判断map集合中是否存在这个单词
if (hashMap.containsKey(word)) {
// 取出之前统计的结果
val count: Integer = hashMap.get(word)
// 在之前的基础上加一
hashMap.put(word, count + 1)
} else {
// 如果单词在hashMap中不存在一个一个进去
hashMap.put(word, 1)
}
}
line = bufferedReader.readLine()
}
println(hashMap)
println("=" * 100)
/**
* scala 统计单词数量
*
*/
// 1、读取文件
val lines: List[String] = Source.fromFile("data/words.txt").getLines().toList
// 2、将一行中的多个单词拆分出来,每个单词一行
val words: List[String] = lines.flatMap(line => line.split(","))
/**
*
* groupBy: 指定一个字段进行分组
*
* 返回一个map集合
* map集合的key 是分组的字段
* map集合的values是组内所有的元素
*
*/
// 3、按照单词分组,将同一个单词分到同一个组内
val groupBuy: Map[String, List[String]] = words.groupBy((word: String) => word)
// 4、统计分组的单词数量
val wordCount: Map[String, Int] = groupBuy.map(kv => {
// key
val word: String = kv._1
// 组内所有单词
val values: List[String] = kv._2
// 计算单词的数量
val count: Int = values.length
// 返回结果
(word, count)
})
wordCount.foreach(println)
println("=" * 100)
/**
*
* 链式调用
*
*/
Source.fromFile("data/words.txt")
.getLines()
.toList
.flatMap(_.split(",")) // 将一行转换成多行
.groupBy(w => w) // 按照单词分组
.map(kv => (kv._1,kv._2.length)) // 统计单词的数量
.foreach(println)
}
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/d6ef683c66df96c949f7efd527c3d03c.png)
我是一个底线——