scala 元組tuple的幾個知識點

2021-08-27 22:26:44 字數 1055 閱讀 5742

通過下標_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,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2122) 會編譯不通過

2、tuple 不能通過乙個泛型引數來指定所有元素的型別,多個元素對應多個引數,試圖通過乙個型別引數來 限定元組中所有的元素的型別是錯誤的

允許這樣使用 : var t=tuple3[int,int,int](1,2,3)  或者var t2= tuple3(1,2,3) 或者var t3=(1,2,3)

不可以這樣使用:tuple3[int](1,2,3)  //試圖通過乙個型別引數來限定元組中所有的元素的型別是錯誤的

3、tuple 不像list一樣有map、flatmap 等方法直接操作元素,只能通過混入的productn(n代表1-22的數字) 的productiterator函式生成乙個iterator來運算元據,並且productiterator的返回型別是iterator[any] ,型別引數是any ,所以運算元據的時候還要進行型別轉換。比如_.asinstanceof[int] 或者模式匹配 例子

例子:val m = map(2->(3,2) , 1->(2,1,3)) 怎麼實現相同key的元素相加,得到 map(2->5 , 1->6) 的結果? 其中value是個元組,元組中可以有任意多個(1-22個)int型別的數字

解決方案: val m2=m.mapvalues(_.productiterator.map(_.asinstanceof[int]).sum) 

val m = map(2->(3,2) , 1->(2,1,3))

val m2=m.mapvalues(_.productiterator.map(_.asinstanceof[int]).sum)

println(m2)

}執行結果:map(2 -> 5, 1 -> 6)

scala中的tuple元組

problem 你想要建立乙個集合,集合元素型別是多樣的。solution 元組為你提供了一種方式來儲存不同型別的元素在乙個容器內,這在許多情況下是非常有用的。新建乙個元祖通過把需要的額元組包在一組小括號內。下面是乙個二元祖 scala val d debi 95 d string,int debi...

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,...

scala中Tuple元組大全

美圖欣賞 一.背景 元組在操作spark中還是非常多的 二.元組 tuple 對映是k v對偶的集合,對偶是元組的最簡單形式,元組可以裝著多個不同型別的值,是不同型別的值的聚集。三.舉例1.第一種方法 建立乙個tuple元組 scala val tuple 1 jackson 2.5 100l 20...