02.27 Scala學習七之集合瞭解

Scala有一個非常通用,豐富,強大,可組合的集合庫;集合是高階的(high level)並暴露了一大套操作方法。

Scala的所有的集合類都可以在包 scala.collection 包中找到,其中集合類都是高級抽象類或特性

Iterable[T] 是所有可遍歷的集合,它提供了迭代的方法(foreach)。Seq[T] 是有序集合,Set[T]是數學上的集合(無序且不重複),Map[T]是關聯數組,也是無序的。

Scala 集合類系統地區分了可變的和不可變的集合。


可變集合可以在適當的地方被更新或擴展,意味著你可以修改、添加、移除一個集合的元素。

而不可變集合類,相比之下,永遠不會改變。不過,你仍然可以模擬添加,移除或更新操作。但是這 些操作將在每一種情況下都返回一個新的集合,同時使原來的集合不發生改變。


可變的集合類位於 scala.collection.mutable 包中,而不可變的集合位於 scala.collection.immutable 。

scala.collection 包中的集合,既可以是可變的,也可以是不可變的


官方文檔

http://www.scala-lang.org/docu/files/collections-api/collections.html

Scala學習七之集合瞭解

List集合

創建輸出

Scala學習七之集合瞭解

獲取頭部元素

Scala學習七之集合瞭解

獲取除去頭部元素之外的元素

Scala學習七之集合瞭解

獲取尾部元素

Scala學習七之集合瞭解

獲取除去尾部元素之外的元素

Scala學習七之集合瞭解

可以從頭拼接的方式創建集合

Scala學習七之集合瞭解

如果一直拼接創建集合(Nil可以理解為空串)

Scala學習七之集合瞭解

如果從尾到頭創建集合

Scala學習七之集合瞭解

遍歷for

Scala學習七之集合瞭解

如果更改元素會提示錯誤list4(0) = 100;

Scala學習七之集合瞭解

可變List

import scala.collection.mutable.ListBuffer

構建

Scala學習七之集合瞭解

添加元素,遍歷

Scala學習七之集合瞭解

給指定位置插入元素

Scala學習七之集合瞭解

刪除元素

Scala學習七之集合瞭解

直接刪除List

Scala學習七之集合瞭解

刪除指定位置的元素

Scala學習七之集合瞭解

獲取數據

Scala學習七之集合瞭解

更新數據

Scala學習七之集合瞭解

轉換


Scala學習七之集合瞭解

如果想用Java集合

Scala學習七之集合瞭解

把Java中List轉換為scala中List

import scala.collection.JavaConverters._

Scala學習七之集合瞭解

List中常見方法:

reverse

Scala學習七之集合瞭解

Zip方法

Scala學習七之集合瞭解

ZipAll

Scala學習七之集合瞭解

轉換range

Scala學習七之集合瞭解

Foreach遍歷,Foreach一般用於數據輸出,因為foreach沒有返回值

Scala學習七之集合瞭解

轉換為字符串

Scala學習七之集合瞭解

Map輸出

Scala學習七之集合瞭解

Map一般是對每一個元素進行處理的,是有返回值的

Scala學習七之集合瞭解

flatMap 對集合中每一個元素進行處理,使用給定函數,並且返回一個新的集合 是在map的基礎上進行了一次扁平化操作,不是把函數的返回值作為新集合的元素,而是把返回值中的元素作為新集合的元素

Scala學習七之集合瞭解

Filter數據過濾 對集合中的每個元素調用給定函數,如果函數執行返回值是true 就會保留,否則反之

Scala學習七之集合瞭解

FilterNot和上面相反

Scala學習七之集合瞭解

Reduce 數據聚合

Scala學習七之集合瞭解

Fold 數據聚合 和reduce區別是可以給一個初始值

Scala學習七之集合瞭解

FoldLeft 給定的初始值可以是任意類型

Scala學習七之集合瞭解

FoldRight

Scala學習七之集合瞭解

Sorted 對集合元素進行排序

Scala學習七之集合瞭解

sortBy 類似Sorted 區別在於sortBy根據函數的返回值排序

Scala學習七之集合瞭解

groupBy 按照給定的函數的返回值對數據進行分組操作,返回結果是Map集合

Scala學習七之集合瞭解

Set

1)無序不重複

2)+/++/-/-- 都會創造一個新的Set

3)+=/++=/-=/--= 不會創造一個新的Set

創建輸出

Scala學習七之集合瞭解

添加元素

Scala學習七之集合瞭解

++添加

Scala學習七之集合瞭解

-正好相反

Scala學習七之集合瞭解

Set的常用方法和List相似,可以作為練習網上查詢使用

訪問元素 Set中沒有專門的方式去訪問數據,因為是無序的

如果直接使用set(0) 是判斷0是否存在於set中

Scala學習七之集合瞭解

將List轉換為Set,完成去重

Scala學習七之集合瞭解

可變Set

import scala.collection.mutable._

Scala學習七之集合瞭解

有一個特殊的地方:一種特殊的添加元素的方式

Scala學習七之集合瞭解

Map

是一種Key-Value鍵值對集合

創建Map

Scala學習七之集合瞭解

數據讀取

Scala學習七之集合瞭解

Get方法

Scala學習七之集合瞭解

GetOrElse

Scala學習七之集合瞭解

可變Map

import scala.collection.mutable._

Scala學習七之集合瞭解

添加元素

Scala學習七之集合瞭解

更新操作,如果存在就更新,不存在就插入

Scala學習七之集合瞭解

遍歷

Scala學習七之集合瞭解

也可以直接key-value

Scala學習七之集合瞭解

其它用到時候再看

集合常用高階函數


Scala學習七之集合瞭解


分享到:


相關文章: