Scala中常见wordcount案例(二)

def main(args: Array[String]): Unit = {
 // val source = Source.fromFile("input/input02.txt")
//  val list = source.getLines().toList.dropRight(1)
//  source.close()
  val list = List(
  ("zhangsan", "河北", "鞋"),
  ("lisi", "河北", "衣服"),
  ("wangwu", "河北", "鞋"),
  ("zhangsan", "河南", "鞋"),
  ("lisi", "河南", "衣服"),
  ("wangwu", "河南", "鞋"),
  ("zhangsan", "河南", "鞋"),
  ("lisi", "河北", "衣服"),
  ("wangwu", "河北", "鞋"),
  ("zhangsan", "河北", "鞋"),
  ("lisi", "河北", "衣服"),
  ("wangwu", "河北", "帽子"),
  ("zhangsan", "河南", "鞋"),
  ("lisi", "河南", "衣服"),
  ("wangwu", "河南", "帽子"),
  ("zhangsan", "河南", "鞋"),
  ("lisi", "河北", "衣服"),
  ("wangwu", "河北", "帽子"),
  ("lisi", "河北", "衣服"),
  ("wangwu", "河北", "电脑"),
  ("zhangsan", "河南", "鞋"),
  ("lisi", "河南", "衣服"),
  ("wangwu", "河南", "电脑"),
  ("zhangsan", "河南", "电脑"),
  ("lisi", "河北", "衣服"),
  ("wangwu", "河北", "帽子")
)

  println(list)
  //println(list.flatMap(_.split(",        ")))
  println(list.map(tuple => {
    (tuple._1,tuple._2 + "" + tuple._3)
  }))
  println(list.map(tuple => {
    (tuple._1, tuple._2 + "" + tuple._3)
  }).groupBy(str => {
    str._2
  }))


  println(list.map(tuple => {
    (tuple._1, tuple._2 + "" + tuple._3)
  }).groupBy(str => {
    str._2
  }).map(kv => {
    (kv._1, kv._2.length)
  }))

  println(list.map(tuple => {
    (tuple._1, tuple._2 + "" + tuple._3)
  }).groupBy(str => {
    str._2
  }).map(kv => {
    (kv._1, kv._2.length)
  }).toList.sortBy(str => {
    str._2
  })(Ordering.Int.reverse))


  val result: Map[String, List[(String, Int)]] = list.map(t => {
    (t._2, t._3)//去除用户名信息,结构转化,使用map,("河北,鞋子")
  })
    .groupBy(_._1)//按照省份进行分组,("河北",("河北,鞋子"))
    .map(t => {
    val list: List[(String, Int)] =
      t._2.map(_._2) //将("河北,鞋子") -> ("鞋子")
        .groupBy(pro => pro)
        .map(tuple => {
          (tuple._1, tuple._2.length)
        })
        .toList
        .sortBy(_._2)(Ordering.Int.reverse)

    (t._1, list)
  })
  println(result)















}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值