problem
你想要建立乙個集合,集合元素型別是多樣的。
solution
元組為你提供了一種方式來儲存不同型別的元素在乙個容器內,這在許多情況下是非常有用的。
新建乙個元祖通過把需要的額元組包在一組小括號內。下面是乙個二元祖:
scala> val
d = ("debi"
, 95
)d: (string, int
) = (debi,95
)
注意,它包含了兩個不同的型別。下面這個例子展示了三元祖:
scala> val t = (3
, "three"
, new
person("al"
))t: (int, string
, person) = (3
,three,person(al))
你可以使用下標來訪問元組元素:
scala> t._1
res0:
int = 3
scala> t._2
res1:
string = three
scala> t._3
res2:
person = person(al)
我通常情況下通過模式匹配來把元祖元素複製給乙個變數:
scala> val (x, y, z) = (3
, "three"
, new
person("al"
))x:
int = 3
y: string = three
z: person = person(al)
這種解決方案還有乙個非常美妙的好處在於,如果你不需要某乙個元素,那麼你可以使用_這個萬用字元來代替這個元素:
scala> val (x, y, _) = (3
, "three"
, new
person("al"
))x:
int = 3
y: string = three
scala> val (x, _, _) = (3
, "three"
, new
person("al"
))x:
int = 3
scala> val (x, _, z) = (3
, "three"
, new
person("al"
))x:
int = 3
z: person = person(al)
二元祖是tuple2 class的例項,三元祖是tuple3 class的例項。下面是建立二元祖最簡單的方式:
scala> val a = ("al"
, "alabama"
)a: (string
, string
) = (al,alabama)
你還可以使用下面的方式建立元組:
scala> val b = "al"
-> "alabama"
b: (string
, string
) = (al,alabama)
scala> val c = ("al"
-> "alabama"
)c: (string
, string
) = (al,alabama)
如果你檢視他們的型別,你會發現他們都是touple2:
scala> a.getclass
res6: class[_ <: (string
, string
)] = class
scala.tuple2
scala> b.getclass
res7: class[_ <: (string
, string
)] = class
scala.tuple2
scala> c.getclass
res8: class[_ <: (string
, string
)] = class
scala.tuple2
這種語法結構還能用來建立map:
scala> val map = map
("al"
-> "alabama"
)map: scala.collection.immutable.map[string
,string
] = map
(al -> alabama)
discussion
元組是乙個非常有趣的結構。但元素元組是不存在的;api中定義了tuple類是從touple2到touple22,一位置你可以擁有乙個2元到22元的元組。
元組的乙個通用情況是方法返回多個結果。這時候使用乙個元組作為返回值而不是集合。雖然tuple不是乙個集合,但是你可以把乙個元組作為乙個集合使用。
scala> val x = ("al"
-> "alabama"
)x: (string
, string
) = (al,alabama)
scala> val it = x.productiterator
it: iterator
[any] = non-empty iterator
scala> for
(e <- it) println(e)
alalabama
使用iterator遍歷元組,在使用完一次以後,就不能再用了。如果你需要再次遍歷這個元組,那麼你需要構造乙個新的iterator來使用。
你也可以轉換乙個元組成為乙個集合:
scala> val t = ("al"
, "alabama"
)t: (string
, string
) = (al,alabama)
scala> t.productiterator.tovector
res13: vector[any] = vector(al, alabama)
scala中Tuple元組大全
美圖欣賞 一.背景 元組在操作spark中還是非常多的 二.元組 tuple 對映是k v對偶的集合,對偶是元組的最簡單形式,元組可以裝著多個不同型別的值,是不同型別的值的聚集。三.舉例1.第一種方法 建立乙個tuple元組 scala val tuple 1 jackson 2.5 100l 20...
Scala學習筆記之元組 Tuple
元組是scala提供的一種特殊的資料結構,或者說是一塊語法糖,它允許多個不同型別的元素組合在一起被使用,如下所示 val tup 1,3.14,元組 true 這是乙個四元組,由4個元素組成。scala目前的版本支援最多22元組。一元組類是存在的,但沒有對應的內建語法,所以單純的用括號把乙個值圍起來...
scala 元組tuple的幾個知識點
通過下標 n取資料不多說了,下面是幾個比較有意思的知識點 知識點1 tuple 和function 和producct一樣最多隻支援22個元素 比如 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 這樣是沒問題的 但是 0,1,2,3,...