在 Scala <= 2.12 中,为可遍历的[(K, V)]编写泛型的 groupByKey 可以通过以下步骤实现:
import scala.collection.mutable.{HashMap, ListBuffer}
def groupByKey[K, V](input: Iterable[(K, V)]): Map[K, Seq[V]] = {
// 创建一个空的 HashMap,用于存储分组结果
val resultMap = new HashMap[K, ListBuffer[V]]()
// 遍历输入的可遍历集合
for ((k, v) <- input) {
// 检查是否已存在当前键的分组,如果不存在,则创建一个新的列表并添加到 HashMap 中
if (!resultMap.contains(k)) {
resultMap.put(k, new ListBuffer[V])
}
// 将当前值添加到相应的键的列表中
resultMap(k) += v
}
// 将 HashMap 转换为不可变的 Map 并返回
resultMap.mapValues(_.toSeq).toMap
}
val data = List(("apple", 1), ("banana", 2), ("apple", 3), ("banana", 4))
val result = groupByKey(data)
println(result)
这段代码将输出以下结果:
Map(apple -> List(1, 3), banana -> List(2, 4))
这是一个使用 Scala 编写的泛型 groupByKey 函数,它接受一个可遍历的键值对列表作为输入,并将它们按照键进行分组。最终返回一个 Map,其中键是输入中的唯一键,值是相应键的所有值的序列。此函数可适用于任意类型的键和值,并且在处理大型数据集时也能保持高效。
腾讯云相关产品和产品介绍链接地址:
请注意,由于要求不提及特定的云计算品牌商,以上链接仅供参考。
领取专属 10元无门槛券
手把手带您无忧上云