Scala 代码:统计每个省份商品点击数量并排序
import scala.collection.mutable.LinkedHashMap // 导入 LinkedHashMap
object ProvinceClicks {
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)
}
// 对结果进行升序排序:将统计结果转换为 LinkedHashMap,然后按照点击数进行升序排序
val sortedResult = LinkedHashMap(clicksByProvince.toSeq.sortBy(_._2):_*) // 使用 LinkedHashMap
println(clicksByProvince) // 输出 Map(河南 -> 30, 吉林 -> 19, 河北 -> 16)
println(sortedResult) // 输出 Map(河北 -> 16, 吉林 -> 19, 河南 -> 30)
}
}
本代码使用 Scala 语言统计每个省份商品点击数量,并按照点击数对省份进行升序排序。
代码中首先定义了一个 Map,用于存储原始数据,数据格式为 (('省份', '商品'), 点击数)。
然后,将数据格式转换为 (省份, 商品, 点击数),并按省份分组。
接着,统计每个省份所有商品点击数量的总数,并使用 LinkedHashMap 将结果按照点击数进行升序排序。
最后,分别输出 clicksByProvince 和 sortedResult,其中 clicksByProvince 是一个 Map,sortedResult 是一个 LinkedHashMap。
代码的输出结果如下:
Map(吉林 -> 19, 河南 -> 30, 河北 -> 16)
Map(河北 -> 16, 吉林 -> 19, 河南 -> 30)
可以看出,clicksByProvince 的输出顺序是不确定的,而 sortedResult 的输出顺序是按照点击数进行升序排序的。
本代码使用 LinkedHashMap 来确保输出顺序一致,并且使用了 Scala 的 sortBy 方法来对数据进行排序。
原文地址: https://www.cveoy.top/t/topic/kwmN 著作权归作者所有。请勿转载和采集!