七:Array/List實操比較-Map需要留意地方

  • 目錄:
  • 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(集)是一種不存在重複元素的集合,它與數學上定義的集合是對應的
元組–則是不同類型值的聚集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章