首页 > 解决方案 > Scala-Groupby Array[(String, Array[String])] 按字符串

问题描述

我有一个结构,Array[(String,Array[String])] 它包含类似的字符串,例如:

    "A",["b","bc","f","df"]
    "B",["b","df","sef","g"]
    "A",["s","rg","rg"]
    "B",["f","dfv","x"]

我希望它被组合在一起,

    "A",["b","bc","f","df","s","rg","rg"]
    "B",["b","df","sef","g","f","dfv","x"]

有没有办法我可以做到这一点?(新的斯卡拉)

标签: scala

解决方案


试试这个:

input
  .groupBy(_._1)
  .mapValues(_.map(_._2).reduce(_ ++ _).distinct)

例子:

val input = Array(
  ("A", Array("b","bc","f","df")),
  ("B", Array("b","df","sef","g")),
  ("A", Array("s","rg","rg")),
  ("B", Array("f","dfv","x"))
)

val result = input
  .groupBy(_._1)
  .mapValues(_.map(_._2).reduce(_ ++ _).distinct)

for ((c, a) <- result) println(c + " -> " + a.mkString(","))

输出:

A -> b,bc,f,df,s,rg
B -> b,df,sef,g,f,dfv,x

推荐阅读