Scala 统计商品点击数据并排序:Map 集合数据处理实战

需求:

根据不同省份的商品点击数据,完成对不同省份商品的点击总数进行统计并按升序进行排序输出。

数据:

数据存放到 Map 集合中,具体格式如下:scalaval data = Map( (('吉林','玉米'),2), (('吉林','袜子'),10), (('河南','山药'),18), (('河南','鞋'),3), (('河南','衣服'),9), (('河北','箱包'),11), (('河北','鸭梨'),5), (('吉林','木耳'),7))

**预期输出:**scalaMap(河南 -> 30, 吉林 -> 19, 河北 -> 16)List((河北,16), (吉林,19), (河南,30))

解题思路:

  1. 将原始数据格式转换为元组形式,方便后续操作。2. 对转换后的数据按省份进行分组,使用 groupBy 函数。3. 对分组后的数据,统计每个省份所有商品点击数量的总数,使用 mapValues 函数。4. 对统计后的结果进行升序排序,使用 toListsortBy 函数。

**代码实现:**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

Scala 统计商品点击数据并排序:Map 集合数据处理实战

原文地址: https://www.cveoy.top/t/topic/kweZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录