【《快學Scala》筆記】java
一、定長數組函數
聲明數組的兩種形式:ui
Scala聲明數組時,須要帶有Array類名,且使用 () 來指明長度或提供初始值序列。scala
在JVM中,Scala的Array以Java數組的方式實現。如arr在JVM中的類型對應java.lang.String[],charArr對應char[]。3d
二、變長數組對象
ArrayBuffer,全稱scala.collection.mutable.ArrayBuffer,相似於Java中的ArrayList和C++中的vector,是長度可變數組類型的結構,稱爲數組緩衝。blog
經過:val 名 = ArrayBuffer[類型]() 來聲明,聲明ArrayBuffer時須要指明類型。排序
經過 += 操做符來添加元素或序列,++= 操做符來拼接數組。
【在ArrayBuffer的尾端添加或刪除元素是一個高效的操做。】 ArrayBuffer還支持在指定位置插入、刪除元素。
ArrayBuffer到數組的轉換: toArray方法
三、數組遍歷
經過for循環來遍歷數組
指定遍歷數組的步長——經過until(上界, 步長)
經過reverse函數逆序遍歷數組:
四、能夠經過 for循環+yield 來得到新的數組或ArrayBuffer
經過for+yield操做數組或ArrayBuffer以後將獲得新的數組或ArrayBuffer。
五、操做數組/數組緩衝經常使用函數
求和、求最大最小值、數組排序。經過sorted函數對數組或ArrayBuffer排序時,返回的是一個新的數組或ArrayBuffer,原有的不變。
能夠直接對數組調用排序算法,可是不能對ArrayBuffer排序。
quickSort是直接修改原數組,而sorted方法是返回新數組。
六、多維數組
Scala中的多維數組同Java中同樣,多維數組都是數組的數組。
從二維數組的初始化中,咱們能夠看到,多維數組在Scala中也是數組的數組。
多維數組是數組的數組,按照這種性質來聲明多維數組,如例子中的二維數組,聲明時,須要指定最外圍的數組大小。
【注:能夠經過scala.collection.JavaConversions包中隱式轉換方法來實現Scala容器類與Java中類的轉換。】
一、映射構造
對偶,即名值對。能夠經過 -> 操做符來定義對偶, 名->值 運算的結果是( 名, 值 );
也能夠聲明對偶形式的變量:
映射是由對偶構成的,映射是對偶的集合。
【注: 不可變映射維持元素插入順序。】
【注:放入可變映射中的值並未按照放入順序來排序的。】
經過for循環來修改可變Map中的值;
【注:映射可變、不可變指的是整個映射是否可變,包括元素值、映射中元素個數、元素次序等。】
直接經過 new Map[類型1, 類型2]() 來定義映射會報錯,由於Map是抽象的,沒法實例化。
定義空映射時,須要指定映射的實現類,經過new來定義;
分別定義不可變映射與可變映射。注,直接使用 new HashMap定義時會報錯。
二、映射經常使用操做
經過映射的 keySet 方法能夠得到映射的由鍵值構成的集合;經過 values 方法能夠得到映射的值集合的Interable對象,應用於循環中。
Scala的keySet / values 方法相似於Java中的映射方法。
三、Scala中映射的底層實現要麼基於哈希表,要麼基於平衡樹,其中基於平衡樹的映射內部是有序的。
Scala目前基於平衡樹的映射只提供了不可變版本。
【注:構建可變有序映射可藉助Java的TreeMap。】
四、可變映射中,若要構建維持元素插入順序的映射可經過LinkedHashMap。
五、經過scala.collection.JavaConversions.mapAsScalaMap可將Java的Map轉換爲Scala類型的Map;經過scala.collection.JavaConversions.mapAsJavaMap可將Scala的映射轉換爲Java類型的映射。
六、toMap方法
使用toMap方法可將對偶組成的集合轉化爲映射。
一、元組是不一樣類型的值的彙集;對偶是最簡單的元組。
二、元組表示
經過將不一樣的值用小括號括起來,即表示元組。
上例中元組的類型就是 (Int, Double, Char, String) ;元組中能夠存放不一樣類型的值。
三、元組訪問
【注:元組中組元下標從1開始。】
忽略不須要的值。在模式匹配時,經過 _ (萬能匹配符)來爲不須要獲取值的組元佔位,每一個 _ 僅能夠爲一個組元佔位。
四、元組可用於函數返回多個值的情形
上例中,函數定義返回值類型爲元組 (Int, String);