// 原始数据
val data = Map((("吉林", "玉米"), 2),
               (("吉林", "袜子"), 10),
               (("河南", "山药"), 18),
               (("河南", "鞋"), 3),
               (("河南", "衣服"), 9),
               (("河北", "箱包"), 11),
               (("河北", "鸭梨"), 5),
               (("吉林", "木耳"), 7))

// 转换数据格式
val mappedData = data.map { case ((province, item), count) => (province, item, count) }

// 按省份进行分组
val groupedData = mappedData.groupBy(_._1)

// 统计每个省份所有商品点击数量的总数
val reducedData = groupedData.map { case (province, items) => (province, items.map(_._3).sum) }

// 按升序排序
val sortedData = reducedData.toList.sortBy(_._2)

// 输出结果
println(reducedData)
println(sortedData)

注释:

  1. 原始数据: 定义一个名为 data 的 Map 集合,存储商品点击数据,每个元素包含省份、商品名称和点击次数。
  2. 转换数据格式: 使用 map 操作将原始数据中的元组格式改为三元组格式,方便后续处理。
  3. 按省份进行分组: 使用 groupBy 操作将数据按省份进行分组,将每个省份的数据放在一个列表中。
  4. 统计每个省份所有商品点击数量的总数: 对每个省份的数据列表进行 map 操作,将每个商品点击数量取出并求和。
  5. 按升序排序: 使用 toListMap 转换为 List,然后使用 sortBy 按商品点击数量升序排序。

输出结果:

Map(河南 -> 30, 吉林 -> 19, 河北 -> 16)
List((河北,16), (吉林,19), (河南,30))
Scala 统计不同省份商品点击总数并排序

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

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