2017-05-06 617 views
1

假設我有一個Iterable[(Int, String)]。我如何得到一個只有「值」的數組?也就是說,我如何從Iterable[(Int, String)] => Array[String]轉換? 「鍵」或「值」不一定是唯一的,這就是爲什麼我把它們放在引號中的原因。Scala將元組的迭代過程轉換爲數組Tuple._2

回答

1

只需:

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

val values = iterable.toArray.map(_._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) 
1
iterable.map(_._2).toArray 

_._ 2:取出由表示的元組的第二元件輸入變量(_),其名稱我不在乎。

0

除了已經建議的地圖之外,當您從元組映射到字符串時,您可能想要構建數組,而不是在某個點進行轉換,因爲它可能會保存迭代。

import scala.collection 

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