如何将元组的序列转换为单个元素的集合 Scala
How to convert a Seq of tuples into set's of individual elements Scala
我们有一个元组序列 Seq(department, title
) depTitleSeq
我们想提取 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 还很陌生,我相信有更好、更有效的方法可以实现这一点,如果您能为我们指出正确的方向,那将有很大帮助
val result:(Set[String], Set[String]) = depTitleSeq.foldLeft((Set[String](), Set[String]())){(a, b) => (a._1 + b._1, a._2 + b._2) }
您可以使用 foldLeft
来实现。
val depTitleSeq = Seq(("x","a"),("y","b"))
val depSet = depTitleSeq.map(_._1).toSet
val titleSet = depTitleSeq.map(_._2).toSet
在 Scala REPL 中:
scala> val depTitleSeq = Seq(("x","a"),("y","b"))
depTitleSeq: Seq[(String, String)] = List((x,a), (y,b))
scala> val depSet = depTitleSeq.map(_._1).toSet
depSet: scala.collection.immutable.Set[String] = Set(x, y)
scala> val titleSet = depTitleSeq.map(_._2).toSet
titleSet: scala.collection.immutable.Set[String] = Set(a, b)
如果您想要将两个 Seq
数据组合成一个 Seq
元组,您可以 zip
将它们组合在一起。
如果您有 Seq
个元组并且您希望将元素分开,那么您可以 unzip
它们。
val (departmentSeq, titleSeq) = getDepTitleTupleSeq().unzip
val depSet :Set[String] = departmentSeq.toSet
val titleSet :Set[String] = titleSeq.toSet
我们有一个元组序列 Seq(department, title
) depTitleSeq
我们想提取 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 还很陌生,我相信有更好、更有效的方法可以实现这一点,如果您能为我们指出正确的方向,那将有很大帮助
val result:(Set[String], Set[String]) = depTitleSeq.foldLeft((Set[String](), Set[String]())){(a, b) => (a._1 + b._1, a._2 + b._2) }
您可以使用 foldLeft
来实现。
val depTitleSeq = Seq(("x","a"),("y","b"))
val depSet = depTitleSeq.map(_._1).toSet
val titleSet = depTitleSeq.map(_._2).toSet
在 Scala REPL 中:
scala> val depTitleSeq = Seq(("x","a"),("y","b"))
depTitleSeq: Seq[(String, String)] = List((x,a), (y,b))
scala> val depSet = depTitleSeq.map(_._1).toSet
depSet: scala.collection.immutable.Set[String] = Set(x, y)
scala> val titleSet = depTitleSeq.map(_._2).toSet
titleSet: scala.collection.immutable.Set[String] = Set(a, b)
如果您想要将两个 Seq
数据组合成一个 Seq
元组,您可以 zip
将它们组合在一起。
如果您有 Seq
个元组并且您希望将元素分开,那么您可以 unzip
它们。
val (departmentSeq, titleSeq) = getDepTitleTupleSeq().unzip
val depSet :Set[String] = departmentSeq.toSet
val titleSet :Set[String] = titleSeq.toSet