1.元組
定義方式:val tp=("nana',1,1.1)
特點:集合中的資料可以是不同型別的
最多只能放22個元素
取值:通過角標取值,這裡的角標是從1開始的,元組名稱._角標 tp._1 ("nana")
當出現陣列長度不相同時,報錯
對偶元組:val tp=("nana",1) 兩個元素
拉鍊操作: zip
當出現陣列長度不想同時,一一匹配,無則不匹配
2.陣列
陣列分為:不可變陣列:長度不變,內容可變array
可變陣列:長度內容都可以改變 arraybuffer
不可變陣列
定義:val array1=array(1,3,5,7)
val array2=new array[int](5) 初始值都為0,需要指定長度
取值:通過角標,從1開始 array1(1) 指泛型
賦值:array1(0)=333 賦值是從0開始的
可變陣列
導包jar import scala.collection.mutable.arraybuffer
定義val array3=arraybuffer(11,22,33,44)
val array4=new arraybuffer[int](5)
取值、賦值和不可變陣列一樣
可變陣列的運算符號
+= 新增單個值 array3+=2222
++= 新增陣列 array3++=array4
-= 刪除單個值 array3-=44
--= 刪除多個值 array3--=array1
陣列的常用方法
陣列的反**reverse array3.reverse
陣列的擷取:slice(from,until) array3.slice(1,2) 左閉右開
陣列的去重:distinct array3.distinct
3.list
不可變的 list 長度,內容都是不可以改變的
可變的 listbuffer 長度,內容都是可變的
建立不可變的list
val list1=list[int](1,2,44,55)
構建list的另一種方法 ::nil
8::9::44::nil nil空列表
::該方法被稱為cons,以為構造,向佇列的頭部追加資料,建立新的列表,用法為x::list,其中x為加入頭部的元素,無論x是列表與否,他都只將成為新生成列表的第乙個元素
新增元素
:+在尾部追加元素 list1 :+1
+:在頭部追加元素(:要朝向集合) 1+:list1
++ 該方法用於連線兩個集合 list1++list2
:::只能用於鏈結兩個list型別的集合
對於不可變型別集合的操作,生成了乙個新的集合,元集合並沒有被改變
可變的list
導包jar import scala.collection.mutable.listbuffer
val list1=listbuffer(11,22,34,55)
val list2=new listbuffer[int]() 不設定陣列大小
list的集合由兩部分組成
hade list1.head list集合的第乙個元素
tail list1.tail list集合除去第乙個元素的其他元素
list集合的轉換
tolist array3.tolist
toarray list3.toareray
4.map
定義(1)val map1=map(("nana",12),("jingjing",23))
(2) val map2=map("nana"->1,"jingjing"->2)
迴圈map1.keys.foreach{
i =>print("key=「+i)
printin("value="+map1(i))
map的幾種方法
contains(包含) boolean 判斷是否存在key
map1("nana") 返回value map1("nan") 報錯
map1.get("nana") 返回opint[int]=some(12) scala option(選項)型別用來表示乙個值是可選的(有值或無值)。
map1.getorelse("nana",-1) int=12 你可以使用 getorelse() 方法來獲取元組中存在的元素或者使用其預設的值,如果不存在的話則返回-1(可以自己定義)
5.set
set實際上是map集合上的key,set儲存的元素是唯一的,不重複的,會自動去除掉重複的
val set=set(1,2,3,1)
6.集合上常用的方法
map : 一對一對映
也就是對原來的集合中的每乙個元素,執行某一項操作(該操作取決於函式的內容)
(自己的理解:萬能轉化器(自己想要什麼格式,就轉成什麼格式) array3.map(_*2) array3.map(tp=>tp*2)
filter 過濾出滿足條件的元素 array3.filter(_>22) array3.filter(tp=>tp>33&&tp<543)
filternot 過濾出不滿足條件的
flatten 壓平
unit 型別,沒有返回值的型別(返回值為空)
sorted 排序
7.集合框架中常用方法
交集 array1.instersect(array3)
差集 array1.diff(array3)
並集 array1.union(array3)
Scala 的並行集合
當出現kafka單個分割槽資料量很大,但每個分割槽的資料量很平均的情況時,我們往往採用下面兩種方案增加並行度 l 增加kafka分割槽數量 l 對拉取過來的資料執行repartition 但是針對這種情況,前者的改動直接影響所有使用消費佇列的模型效能,後者則存在乙個shuffle的效能消耗。有沒有既...
scala 集合型別
iterable 是序列 seq 集 set 對映 map 的特質 序列式有序的集合如陣列和列表 集合可以通過 方法確定對每個物件最多包含乙個 對映包含了鍵值對映關係的集合 列表快取 使用listbuffer代替list 另乙個理由是為了避免棧溢位的風險 陣列快取 arraybuffer需要先從可變...
Scala基礎學習 scala集合 005
定長陣列 println test val a new array string 5 a.length a 0 hello 賦值 a 1 取值 b 1 flink 可以修改值,並沒有修改指標 val c array 1,2,3,4,5,6 c.mkstring 轉換為字串 c.mkstring c....