首页 > 解决方案 > 如何将元组的 Seq 转换为单个元素的集合 Scala

问题描述

我们有一个元组序列Seq(department, titledepTitleSeq我们想要提取Set(department)Set(title)寻找到目前为止我们能想出的最佳方法是

val depTitleSeq = getDepTitleTupleSeq()
var departmentSeq = ArrayBuffer[String]()
var titleSeq = ArrayBuffer[String]()
for (depTitle <- depTitleSeq) yield {
  departmentSeq += depTitle._1
  titleSeq += depTitle._2
}

val depSet = departmentSeq.toSet
val titleSet = titleSeq.toSet

对 scala 来说相当新,我相信有更好、更有效的方法来实现这一点,如果你能指出正确的方向,这将有很大帮助

标签: scalatuplesscala-collections

解决方案


如果你有两个Seq想要组合成一个Seq元组的数据,你可以zip把它们放在一起。

如果您有一个Seq元组并且您希望将元素分开,那么您可以使用unzip它们。

val (departmentSeq, titleSeq) = getDepTitleTupleSeq().unzip

val depSet   :Set[String] = departmentSeq.toSet
val titleSet :Set[String] = titleSeq.toSet

推荐阅读