Scala的集合框架

2022-07-17 18:12:11 字數 2985 閱讀 6710

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