- 目錄:
- 1、數組實操
- 2、List實操:
- 3、Array和List區別:
- 4、Map實操:
- 5、其他列表
1、數組實操
1.1、定長數組
//定義
scala> val a =new Array[Boolean](5)
a: Array[Boolean] = Array(false, false, false, false, false)
scala> val a =new Array[String](5)
a: Array[String] = Array(null, null, null, null, null)
scala> val a =new Array[Int](5)
a: Array[Int] = Array(0, 0, 0, 0, 0)
//寫
scala> a(1)=10
scala> a
res13: Array[Int] = Array(0, 10, 0, 0, 0)
/讀
scala> a(1)
res14: Int = 10
// 數組可以不用new,直接引用apply方法創建
scala> val b = Array(1,2)
b: Array[Int] = Array(1, 2)
數組相關:
數組操作中的常用算法:max/min/sum/mkstring(",")
1.2變成數組
insert/toArray/
import scala.collection.mutable.ArrayBuffer
scala> val c = ArrayBuffer[Int]()
c: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> c += 3
res15: c.type = ArrayBuffer(3)
scala> c
res16: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(3)
scala> c ++= Array(2,3,4)
res17: c.type = ArrayBuffer(3, 2, 3, 4)
scala> c.remove(0)
res18: Int = 3
scala> c
res19: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(2, 3, 4)
2、List實操:
scala> Nil
res1: scala.collection.immutable.Nil.type = List()
一串可重複的組合:head+tail
scala> val a = 1 :: Nil
a: List[Int] = List(1)
def sum (nums:Int*):Int={
if (nums.length == 0){
0
}else{
nums.head+ sum(nums.tail:_*)
}
3、Array和List區別:
3.1:List一但創建,其值不能被改變 ,改變其值的話,編譯器會報錯
scala> val Araaya = Array(1,2,3,4,5,6)
Araaya: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> val Listb = List(1,2,3,4,5,6)
Listb: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> Araaya(1)=8
scala> Araaya
res1: Array[Int] = Array(1, 8, 3, 4, 5, 6)
scala> Listb(1)=8
<console>:13: error: value update is not a member of List[Int]
Listb(1)=8
3.2 2 List具有遞歸結構(Recursive Structure),例如鏈表結構
4、Map實操:
Map是一種鍵值對的集合,一般將其翻譯爲映射
取值的時候一定要給個默認值,否則會報錯
Map取值的時候一定要用 getorEles
scala> Mapb.getOrElse("gender","unknown")
res2: Any = unknown
Option,None,Some類型
Option、None、Some是scala中定義的類型,它們在scala語言中十分常用,因此這三個類型非常重要,None、Some是Option的子類,它主要解決值爲null的問題,
在java語言中,對於定義好的HashMap,如果get方法中傳入的鍵不存在,方法會返回null,在編寫代碼的時候對於null的這種情況通常需要特殊處理,然而在實際中經常會忘記,因此它很容易引起 NullPointerException異常。
在Scala語言中通過Option、None、Some這三個類來避免這樣的問題,這樣做有幾個好處,首先是代碼可讀性更強,當看到Option時,我們自然而然就知道它的值是可選的,然後變量是Option,比如Option[String]的時候,直接使用String的話,編譯直接通不過。
Set(集)是一種不存在重複元素的集合,它與數學上定義的集合是對應的
元組–則是不同類型值的聚集