Scala 统计不同省份商品点击总数并排序 - 详细代码示例
Scala 统计不同省份商品点击总数并按升序排序
问题描述:
根据不同省份的商品点击数据,完成对不同省份商品的点击总数进行统计并按升序进行排序输出。
**数据格式:**scalaval data = Map((('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7) )
**输出结果:**scalaMap(河南 -> 30, 吉林 -> 19, 河北 -> 16)List((河北,16), (吉林,19), (河南,30))
**代码实现:**scalaval data = Map((('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7) )
val newData = data.map{case ((province, item), count) => (province, (item, count))} .groupBy(.1) .mapValues(.map(._2).reduce((x, y) => (x._1 + y._1, x._2 + y.2))) .toList .sortBy(._2._2)
val result1 = newData.toMapval result2 = newData.map{case (province, (_, count)) => (province, count)}
println(result1)println(result2)
代码解释:
- 数据转换: -
data.map{case ((province, item), count) => (province, (item, count))}: 将原始数据格式转换为(省份, (商品, 点击次数))的格式。2. 分组: -.groupBy(_._1): 根据省份进行分组。3. 统计: -.mapValues(_.map(_._2).reduce((x, y) => (x._1 + y._1, x._2 + y._2))): 对每个省份的商品点击次数进行累加,得到每个省份的总点击次数。4. 排序: -.toList.sortBy(_._2._2): 将结果转换为列表,并根据点击总数进行升序排序。5. 输出结果: -result1: 以Map的形式输出省份和点击总数。 -result2: 以List的形式输出省份和点击总数,并按照点击总数升序排序。
总结:
该代码通过数据转换、分组、统计和排序四个步骤,实现了对不同省份商品点击总数的统计和升序排序。代码简洁易懂,易于理解和维
原文地址: https://www.cveoy.top/t/topic/kwp0 著作权归作者所有。请勿转载和采集!