Scala集合的使用二

2021-08-28 17:27:43 字數 1329 閱讀 1931

1.集合常用的方法

map, flatten, flatmap,filter, sorted, sortby,sortwith, grouped

fold(摺疊),foldleft, foldright,reduce, reduceleft, aggregate,union,

intersect(交集),diff(差集), head, tail, zip,mkstring, foreach, length,slice, sum

2.並行化集合par

呼叫集合的 par 方法, 會將集合轉換成並行化集合

//建立乙個 list

val lst0 = list(1,7,9,8,0,3,5,4,6,2)

//摺疊:有初始值(無特定順序)

val lst11 = lst0.par.fold(100)((x, y) => x + y)

//摺疊:有初始值(有特定順序)

val lst12 = lst0.foldleft(100)((x, y) => x + y)

//聚合

val arr = list(list(1, 2, 3), list(3, 4, 5), list(2), list(0))

val result = arr.aggregate(0)(_+_.sum, _+_)

3.map和option

在 scala 中 option 型別樣例類用來表示可能存在或也可能不存在的值(option 的子類有 some和 none),some 包裝了某個值,none 表示沒有值

// option 是 some 和 none 的父類

// some 代表有(多例),樣例類

// none 代表沒有(單例),樣例物件

val mp = map("a" -> 1, "b" -> 2, "c" -> 3)

val r: int = mp("d")

// map 的 get 方法返回的為 option, 也就意味著 rv 可能取到也有可能沒取到

val rv: option[int] = mp.get("d")

// 如果 rv=none 時, 會出現異常情況

val r1 = rv.get

// 使用 getorelse 方法,

// 第乙個引數為要獲取的 key,

// 第二個引數為預設值, 如果沒有獲取到 key 對應的值就返回預設值

val r2 = mp.getorelse("d", -1)

println(r2)

Scala 的並行集合

當出現kafka單個分割槽資料量很大,但每個分割槽的資料量很平均的情況時,我們往往採用下面兩種方案增加並行度 l 增加kafka分割槽數量 l 對拉取過來的資料執行repartition 但是針對這種情況,前者的改動直接影響所有使用消費佇列的模型效能,後者則存在乙個shuffle的效能消耗。有沒有既...

Scala的集合框架

1.元組 定義方式 val tp nana 1,1.1 特點 集合中的資料可以是不同型別的 最多只能放22個元素 取值 通過角標取值,這裡的角標是從1開始的,元組名稱.角標 tp.1 nana 當出現陣列長度不相同時,報錯 對偶元組 val tp nana 1 兩個元素 拉鍊操作 zip 當出現陣列...

scala 集合型別

iterable 是序列 seq 集 set 對映 map 的特質 序列式有序的集合如陣列和列表 集合可以通過 方法確定對每個物件最多包含乙個 對映包含了鍵值對映關係的集合 列表快取 使用listbuffer代替list 另乙個理由是為了避免棧溢位的風險 陣列快取 arraybuffer需要先從可變...