Scala 统计省份商品点击数并排序转换为 Map
Scala 统计省份商品点击数并排序转换为 Map
本文展示如何使用 Scala 代码统计不同省份商品的点击次数,并根据点击次数进行排序,最终将结果转换为 Map 格式。
代码示例
object A {
def main(args: Array[String]): Unit = {
// 原始数据
val data = Map(
(('吉林', '玉米'), 2),
(('吉林', '袜子'), 10),
(('河南', '山药'), 18),
(('河南', '鞋'), 3),
(('河南', '衣服'), 9),
(('河北', '箱包'), 11),
(('河北', '鸭梨'), 5),
(('吉林', '木耳'), 7)
)
// 转换数据格式:将 (('省份', '商品'), 点击数) 转换为 (省份, 商品, 点击数)
val transformedData = data.map { case ((province, product), clicks) => (province, product, clicks) }
// 按省份分组:将转换后的数据按省份进行分组
val groupedData = transformedData.groupBy(_._1)
// 统计每个省份所有商品点击数量的总数:遍历每个省份,计算该省份下所有商品的点击数之和
val clicksByProvince = groupedData.map { case (province, productList) =>
(province, productList.map(_._3).sum)
}
// 对结果进行升序排序:将统计结果转换为 List,然后按照点击数进行升序排序
val sortedResult = clicksByProvince.toList.sortBy(_._2)
println(clicksByProvince) // 输出 Map(河南 -> 30, 吉林 -> 19, 河北 -> 16)
println(sortedResult) // 输出 List((河北,16), (吉林,19), (河南,30))
// 将排序后的结果转换为 Map 格式
val sortedResultMap = sortedResult.toMap
println(sortedResultMap) // 输出 Map(河北 -> 16, 吉林 -> 19, 河南 -> 30)
}
}
代码解释
- 原始数据: 使用
Map存储原始数据,键值为(('省份', '商品'), 点击数)。 - 转换数据格式: 使用
map函数将原始数据转换为(省份, 商品, 点击数)的格式。 - 按省份分组: 使用
groupBy函数将数据按省份进行分组。 - 统计每个省份的点击数总和: 使用
map函数遍历每个省份,计算该省份下所有商品的点击数之和。 - 排序: 使用
sortBy函数对结果进行升序排序。 - 转换为 Map: 使用
toMap函数将排序后的 List 转换为 Map 格式。
输出结果
Map(河南 -> 30, 吉林 -> 19, 河北 -> 16)
List((河北,16), (吉林,19), (河南,30))
Map(河北 -> 16, 吉林 -> 19, 河南 -> 30)
通过代码示例和解释,您可以了解到如何使用 Scala 代码对数据进行统计、排序和格式转换,最终获得所需的 Map 格式结果。
原文地址: https://www.cveoy.top/t/topic/kvWZ 著作权归作者所有。请勿转载和采集!