Scala基礎(4) 陣列

2021-07-15 18:05:38 字數 3244 閱讀 3155

import scala.collection.mutable.arraybuffer

object

demo

def changint: unit =

def signumarr(arr: array[int]) =

}

//固定陣列

val arr1 = new

array[int](3) // 初始值都是0

val arr2 = array("hello", "world") // 不用new關鍵字

//陣列緩衝

val arrbuffer = new

arraybuffer[int]()

陣列訪問呼叫角標的時候使用的是()不是

陣列緩衝的trimend方法十分高效,邏輯可以盡量往這邊靠攏

//固定陣列

arr2(0) = "hi"

//設定角標為0的值

println(arr2(0)) // 輸出 hi

//陣列緩衝

arrbuffer +=12

// 新增元素 12

println(arrbuffer(0)) // 輸出 12

arrbuffer ++= arr // 新增 arr 所有元素後:12 0 0 0

arrbuffer.insert(2

,5) //在角標處插入元素後:12 0 5 0 0

arrbuffer.trimend(3) //刪除倒數第 3 個元素後:12 0 0 0

val arr = arrbuffer.toarray //陣列緩衝轉化成固定陣列

val arrbuffer = arr.tobuffer //固定陣列轉化成陣列緩衝

for (i <- 0

until arrbuffer.length) print(arrbuffer(i))

for (i <- arrbuffer.indices) print(arrbuffer(i))// arrbuffer.indices相當於0

until arrbuffer.length

for (i <- 0

until(arrbuffer.length, 2)) print(arrbuffer(i)) // 每兩個一跳(會不會視為元組?)

for (i <- (0

until arrbuffer.length).reverse) print(arrbuffer(i)) // 從尾部開始遍歷

for (elem <- arrbuffer) println(elem)

arrbuffer.foreach(println) //輸出每乙個值

val a = array(2, 3, 4, 5)

val b = for (elem <- a) yield elem // 通過for yield 返回的是陣列或者陣列緩衝

val c = for (elem <- a if elem % 2 == 0) yield elem //使用守衛過濾奇數,for yield是不會影響原陣列或陣列緩衝的

// 逆序

arr.reverse:返回array的逆序

arraybuffer.reverse:返回arraybuffer的逆序

// 求和

val a1 = array(1, 2, 3, 4).sum //10

println("常用演算法a1:" + a1)

val a2 = arraybuffer(1, 2, 3, 4).sum //10

println("常用演算法a2:" + a2)

// 統計

val a = arr.count(_ < a)//統計陣列arr中小於a的個數

val a = arr.count(_ == a)//統計陣列arr中等於a的個數

val a = arr.count(_ > a)//統計陣列arr中大於a的個數

// 極值

val b1 = array("mary", "had", "little").max //"little"

println("常用演算法b1:" + b1)

val b2 = arraybuffer("mary", "had", "little").max //"little"

println("常用演算法b2:" + b2)

// 排序(新建另乙個陣列)

val c1 = arraybuffer(1, 7, 9, 3)

println("常用演算法c1:" + c1)

val csorted1 = c1.sorted //原陣列不會發生改變,cstorted1:1,3,7,9

println("常用演算法csorted1:" + csorted1)

val c2 = arraybuffer(1, 7, 9, 3)

println("常用演算法c2:" + c2)

val csorted2 = c2.sorted //原陣列不會發生改變,cstorted2:1,3,7,9

println("常用演算法csorted2:" + csorted2)

// 排序(不新建陣列)

val d1 = array(1, 7, 9, 3)

scala.util.sorting.quicksort(d1)//只能用於固定長度陣列

printarray(d1)

val s = "helloworld"

val str = s.take(3) //順序取 第三個以前 hel

val str = s.drop(3) //順序取 第三個以後 loworld

val str = s.takeright(3) //逆序取 倒數第三個以後 rld

val str = s.dropright(3) //逆序取 倒數第三個以前 hellowo

val str = s.substring(1,3) //前閉後開 el

val arr1 = array.ofdim[int](3, 4) // 直接建立 3行4列

//不規則多維陣列

val arr2 = new

array[array[int]](10) // 建立不規則多維陣列

for (i <- 0

until arr2.length) arr2(i) = new

array[int](i + 1)// 賦值

Scala 基礎2 陣列

陣列 array arraybuffer 定長陣列 val a array int array 1,2,3,4,5 a array 1,2,3 錯誤 println a 0 a 0 10 println a 0 val a array 1,2,3,4,5 array int for x a prin...

scala基礎語法 陣列

在scala中,可以使用new例項化類,建立物件的例項時,可以使用數值或型別引數。使用方括號來指明資料型別引數。如下 val hellostrings new array string 2 hellostrings 0 hello hellostrings 0 world n for i 0 to ...

scala基礎4 集合

map set list 集合 可變集合可以在適當的地方被更新或擴充套件,意味著你可以修改 新增 移除乙個集合的元素。而不可變集合類,相比之下,永遠不會改變。不過,你仍然可以模擬新增,移除或更新操作。但是這些操作都將返回乙個新的集合,同時原來的集合不發生改變。不可變的都在immutable裡,可變的...