Scala 统计商品点击数据并排序:Map 集合数据处理实战
Scala 统计商品点击数据并排序:Map 集合数据处理实战
需求:
根据不同省份的商品点击数据,完成对不同省份商品的点击总数进行统计并按升序进行排序输出。
数据:
数据存放到 Map 集合中,具体格式如下:scalaval data = Map( (('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7))
**预期输出:**scalaMap(河南 -> 30, 吉林 -> 19, 河北 -> 16)List((河北,16), (吉林,19), (河南,30))
解题思路:
- 将原始数据格式转换为元组形式,方便后续操作。2. 对转换后的数据按省份进行分组,使用
groupBy函数。3. 对分组后的数据,统计每个省份所有商品点击数量的总数,使用mapValues函数。4. 对统计后的结果进行升序排序,使用toList和sortBy函数。
**代码实现:**scalaval data = Map( (('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7))
// 将原始数据格式转换为元组形式val newData = data.map{ case ((province, product), clicks) => (province, product, clicks) }
// 对转换后的数据按省份进行分组val groupedData = newData.groupBy(_._1)
// 对分组后的数据,统计每个省份所有商品点击数量的总数val sumData = groupedData.mapValues(.map(._3).sum)
// 对统计后的结果进行升序排序val sortedData = sumData.toList.sortBy(_._2)
println(sumData)println(sortedData)
输出结果:
Map(河南 -> 30, 吉林 -> 19, 河北 -> 16)List((河北,16), (吉林,19), (河南,30
原文地址: https://www.cveoy.top/t/topic/kweZ 著作权归作者所有。请勿转载和采集!