Scala下划线

注:可以理解成把参数省略,然后用下划线替代

//demo1(本地单词计数)

//获取文件,并逐行读取单词,存入一个list中
val list = Source.fromFile("F:/word.txt").getLines().toList
println(list)//List(big, data, big, spark, scala, spark, hadoop, haddop, hive, spark)
//元素由单词映射成元组
val list_tuple = list.map(x => (x, 1))
println(list_tuple)//List((big,1), (data,1), (big,1), (spark,1), (scala,1), (spark,1), (hadoop,1), (haddop,1), (hive,1), (spark,1))
//按照元组第一个元素分组,映射成map,元组第一个元素为键,元组集合做值
val map_list = list_tuple.groupBy(x => x._1)
println(map_list)//Map(big -> List((big,1), (big,1)), data -> List((data,1)), haddop -> List((haddop,1)), hadoop -> List((hadoop,1)), spark -> List((spark,1), (spark,1), (spark,1)), hive -> List((hive,1)), scala -> List((scala,1)))
//获取list的tuple中的第二个值,又组成list
val map_list2 = map_list.mapValues(list => list.map(x => x._2))
println(map_list2)//Map(big -> List(1, 1), data -> List(1), haddop -> List(1), hadoop -> List(1), spark -> List(1, 1, 1), hive -> List(1), scala -> List(1))
//根据key值把list中的值进行过相加
val map_list3 = map_list.mapValues(list => list.map(x => x._2).reduce((m, n) => (m + n)))
println(map_list3)//Map(big -> 2, data -> 1, haddop -> 1, hadoop -> 1, spark -> 3, hive -> 1, scala -> 1)

//demo2(带下划线精简的本地单词计数)

//获取文件,并逐行读取单词,存入一个list中
val list = Source.fromFile("F:/word.txt").getLines().toList
println(list)//List(big, data, big, spark, scala, spark, hadoop, haddop, hive, spark)
//元素由单词映射成元组
val list_tuple = list.map((_, 1))
println(list_tuple)//List((big,1), (data,1), (big,1), (spark,1), (scala,1), (spark,1), (hadoop,1), (haddop,1), (hive,1), (spark,1))
//按照元组第一个元素分组,映射成map,元组第一个元素为键,元组集合做值
val map_list = list_tuple.groupBy(_._1)
println(map_list)//Map(big -> List((big,1), (big,1)), data -> List((data,1)), haddop -> List((haddop,1)), hadoop -> List((hadoop,1)), spark -> List((spark,1), (spark,1), (spark,1)), hive -> List((hive,1)), scala -> List((scala,1)))
//获取list的tuple中的第二个值,又组成list
val map_list2 = map_list.mapValues(_.map(_._2))
println(map_list2)//Map(big -> List(1, 1), data -> List(1), haddop -> List(1), hadoop -> List(1), spark -> List(1, 1, 1), hive -> List(1), scala -> List(1))
//根据key值把list中的值进行过相加
val map_list3 = map_list.mapValues(_.map(_._2).reduce(_ + _))
println(map_list3)//Map(big -> 2, data -> 1, haddop -> 1, hadoop -> 1, spark -> 3, hive -> 1, scala -> 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值