package com.doit.scala.day02
import scala.collection.immutable
object WordCount {
def main(args: Array[String]): Unit = {
val lines: immutable.Seq[String] = List("spark hadoop flink spark", "hadoop flink spark hadoop", "spark hadoop flink spark")
val list: immutable.Seq[(String, Int)] = lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t => (t._1, t._2.length)).toList.sortBy(-_._2)
// println(list)
//先对List扁平化 flat 切分 split
val strings = lines.flatMap(_.split(" "))
//将每一个单词放入元组(x,1) 中
val wordAndOne: immutable.Seq[(String, Int)] = strings.map((_, 1))
//将已经装进元组的List数据按照(x,1)的分组
val grouped: Map[String, immutable.Seq[(String, Int)]] = wordAndOne.groupBy(_._1)
//聚合
val reduce: Map[String, Int] = grouped.map(t => (t._1, t._2.size))
//转成List,排序
val list1 = reduce.toList
//降序排列
val tuples: immutable.Seq[(String, Int)] = list1.sortBy(-_._2)
//先正序排列再反转
val tuples2: immutable.Seq[(String, Int)] = list1.sortBy(_._2).reverse
println(tuples) //List((spark,5), (hadoop,4), (flink,3))
}
}