Scala中常見的容器 元組 Tuple

與列表一樣,元組也是不可變的,但與列表不同的是元組可以包含不同類型的元素。

元組的值是通過將單個的值包含在圓括號中構成的。例如:

val t = (1, 3.14, "Fred")  

以上實例在元組中定義了三個元素,對應的類型分別爲[Int, Double, java.lang.String]。

此外我們也可以使用以上方式來定義:

val t = new Tuple3(1, 3.14, "Fred")

元組的實際類型取決於它的元素的類型,比如 (99, "runoob") 是 Tuple2[Int, String]。 ('u', 'r', "the", 1, 4, "me") 爲 Tuple6[Char, Char, String, Int, Int, String]。

目前 Scala 支持的元組最大長度爲 22。對於更大長度你可以使用集合,或者擴展元組。

訪問元組的元素可以通過數字索引,如下一個元組:

val t = (4,3,2,1)

我們可以使用 t._1 訪問第一個元素, t._2 訪問第二個元素,如下所示:

object Test {
   def main(args: Array[String]) {
      val t = (4,3,2,1)

      val sum = t._1 + t._2 + t._3 + t._4

      println( "元素之和爲: "  + sum )
   }
}

執行以上代碼,輸出結果爲:

$ scalac Test.scala 
$ scala Test
元素之和爲: 10

迭代元組

你可以使用 Tuple.productIterator() 方法來迭代輸出元組的所有元素:

object Test {
   def main(args: Array[String]) {
      val t = (4,3,2,1)
      
      t.productIterator.foreach{ i =>println("Value = " + i )}
   }
}

執行以上代碼,輸出結果爲:

$ scalac Test.scala 
$ scala Test
Value = 4
Value = 3
Value = 2
Value = 1

元組轉爲字符串

你可以使用 Tuple.toString() 方法將元組的所有元素組合成一個字符串,實例如下:

object Test {
   def main(args: Array[String]) {
      val t = new Tuple3(1, "hello", Console)
      
      println("連接後的字符串爲: " + t.toString() )
   }
}

執行以上代碼,輸出結果爲:

$ scalac Test.scala 
$ scala Test
連接後的字符串爲: (1,hello,scala.Console$@4dd8dc3)

元素交換

你可以使用 Tuple.swap 方法來交換元組的元素。如下實例:

object Test {
   def main(args: Array[String]) {
      val t = new Tuple2("www.google.com", "www.runoob.com")
      
      println("交換後的元組: " + t.swap )
   }
}

執行以上代碼,輸出結果爲:

$ scalac Test.scala 
$ scala Test
交換後的元組: (www.runoob.com,www.google.com)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章