scala數組

scala數組:分爲定長數組和變長數組java

 

scala> val arr1 = new Array[Int](8)             //只定義8個是整型類型的定長數組,沒有賦值,每一個數組裏面的值是0python

arr1: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0)數組

 

scala> val arr1 = new Array[String](8)         //只定義8個是字符串類型的定長數組,沒有賦值,每一個值顯示是爲nullspa

arr1: Array[String] = Array(null, null, null, null, null, null, null, null)scala

 

scala> println(arr1)                                  //直接打印數組是一個引用,並無打印出數組裏面的內容。rem

[Ljava.lang.String;@4973f7dd字符串

 

scala> println(arr1.toBuffer)                     //使用toBuffer方法將數組裏面的內容轉換成數組緩衝裏面,將其打印出來。it

ArrayBuffer(null, null, null, null, null, null, null, null)io

 

下面是直接賦值方式定義一個數組:for循環

scala> val arr2 = Array("java","scala","python")     //沒有用new是調用的一個靜態方法,並給數組裏面每一個元素賦值

arr2: Array[String] = Array(java, scala, python)

 

scala> val arr2 = new Array("java","scala","python") //使用一個new關鍵字直接賦值定義是錯誤的寫法

                                   ^

       error: too many arguments (3) for constructor Array: (_length: Int)Array[T]

 數組的調用方法數組名後面小括號裏面跟下標(下標從0開始)

scala> println(arr2(0))

java

 

變長數組:scala裏面默認的是一個定長數組,咱們要用變長數組須要導入一個變長數組所依賴的包:

 

scala> import scala.collection.mutable.ArrayBuffer

import scala.collection.mutable.ArrayBuffer

 

scala> val arr3 = ArrayBuffer[Int]()                         //須要指定一個Int類型的一個範型

arr3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

 

 

scala> arr3 += 1                   //向變長數組裏面添加一個數據

res17: arr3.type = ArrayBuffer(1)

 

scala> arr3 += (2,3,4)           //向變長數組裏面添加多個數據

            ^

       warning: method += in trait Growable is deprecated (since 2.13.0): Use `++=` (addAll) instead of varargs `+=`

res18: arr3.type = ArrayBuffer(1, 2, 3, 4)   //較高版本已經不太友好的使用+=來添加多個元素了,提示使用++=方法向變長數組裏面添加數據

 

scala> arr3 ++= Array(5, 6)                    //向變長數組裏面添加一個定長數組裏面的內容

res20: arr3.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

 

scala> arr3 ++= ArrayBuffer(7,8)             //向變長數組裏面添加一個變長數組裏面的內容

res21: arr3.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8)

 

變長數組的添加與刪除 

scala> arr3.insert(0, -1)                      //第 0 個位置插入 -1 

scala> arr3.remove(2,2)                     //移除從第二個位置開始兩個元素

scala> println(arr3.toBuffer)

ArrayBuffer(-1, 1, 4, 5, 6, 7, 8)

 

for循環取數組裏面的數:

scala> for(i<-arr3) println(i)

-1

1

4

5

6

7

8

scala> for(i<- 0 until arr3.length) println(arr3(i))

-1

1

4

5

6

7

8

scala> for(i<- (0 until arr3.length).reverse) println(arr3(i))

8

7

6

5

4

1

-1

 

scala> val res = for(i<-arr3) yield i*10     //yield是把數組裏面的每個值都取出來,而且把每一個值都放到一個集合裏面的這一個做用。而且會產生一個新的數組res

res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(-10, 10, 40, 50, 60, 70, 80)

scala> res

res34: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(-10, 10, 40, 50, 60, 70, 80)

 

scala> arr3.sum

res35: Int = 30

 

scala> arr3.max

res36: Int = 8

 

scala> arr3.sorted

res37: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(-1, 1, 4, 5, 6, 7, 8)

 

scala> arr3.min

res38: Int = -1

相關文章
相關標籤/搜索