其他分享
首页 > 其他分享> > scala02

scala02

作者:互联网

/**
 * @auther :${user}
 * @date :2022/2/10 23:44
 *
 */
object test17 {
  def main(args: Array[String]): Unit = {
    val list: List[(String, Int)] = List(
      ("hello scala hbase kafka", 2),
      ("hello scala hbase", 2),
      ("hello scala hello", 1)
    )
    //思路一直接展开为普通版本
    val newList = list.map(
      kv => {
        (kv._1.trim + " ") * kv._2
      })
    println(newList)

    println(newList
      .flatMap(_.split(" "))
      .groupBy(word => word)
      .map(kv => (kv._1, kv._2.length))
      .toList
      .sortWith(_._2 > _._2))

    //思路二,基于与统计的结果进行转换

    val preCountList: List[(String, Int)] = list.flatMap(
      kv => {
        val strings: Array[String] = kv._1.split(" ")
        strings.map(key => (key, kv._2))
      }
    )
    val wordCountMap: Map[String, Int] = preCountList.groupBy(_._1).mapValues(
      tupleList => tupleList
        .map(_._2)
        .sum
    )
    val rankList: List[(String, Int)] = wordCountMap
      .toList
      .sortWith(_._2 > _._2)
      .take(3)
    println(rankList)
  }
}

标签:map,String,val,scala02,kv,._,_._
来源: https://www.cnblogs.com/ftwftw/p/scala02.html