Scala将Iuprable of Tuples转换为Just Tuple._2的数组

时间:2017-05-06 20:11:53

标签: scala

说我有Iterable[(Int, String)]。我如何获得一系列仅仅是"值"?也就是说,如何从Iterable[(Int, String)] => Array[String]转换? "键"或者"价值观"不必是唯一的,这就是我把它们放在引号中的原因。

4 个答案:

答案 0 :(得分:3)

iterable.map(_._2).toArray

_._ 2:取出由输入变量(_)表示的元组的第二个元素,其名称我不在乎。

答案 1 :(得分:1)

简单地:

val iterable: Iterable[(Int, String)] = Iterable((1, "a"), (2, "b"))

val values = iterable.toArray.map(_._2)

答案 2 :(得分:1)

只需map可迭代并提取第二个元素(tuple._2),

scala> val iterable: Iterable[(Int, String)] = Iterable((100, "Bring me the horizon"), (200, "Porcupine Tree"))
iterable: Iterable[(Int, String)] = List((100,Bring me the horizon), (200,Porcupine Tree))

scala> iterable.map(tuple => tuple._2).toArray
res3: Array[String] = Array(Bring me the horizon, Porcupine Tree)

答案 3 :(得分:0)

除了已建议的地图之外,您可能希望在从元组映射到字符串时构建数组,而不是在某些时候进行转换,因为它可能会保存迭代。

import scala.collection

val values: Array[String] = iterable.map(_._2)(collection.breakOut)