Scala編程入門---數組操作之Array.ArrayBuffer以及遍歷數組


在Scala中,Array代表的含義與Java類似,也是長度不可改變的數組。此外,由於Scala與java都是運行在JVM中,雙方可以互相調用,因此Scala數組底層實際上是java數組。列如字符串數組java的String[],整數的數組int[].

val a = new Array[Int](10)

val a = new Array[String](10) 

 

可以直接使用Array()創建數組,元素類型自動推斷

val a = Array("Hello","world")

a(0) ="hi"

val a = Array("Hello",30)

a:

Array[Any]("Hello",30)

 

ArrayBuffer:

在Sacla中,如果需要類似於JAVA中的ArrayList這種可變長度的集合類,則可以使用ArrayBuffer.

#如果不想每次都是用完全限定名,則可以預先導入ArrayBuffer類
import scala.collection.mutable.ArrayBuffer
//使用ArrayBuffer的方式可以創建一個空的ArrayBuffer
val b = ArrayBuffer[Int]()
//使用+=操作符,可以添加一個元素,或者多個元素
//這個語法必須謹記在心!因為Sprak源碼里大量使用了這種集合操作語法!
b+=1 b+=(2,3,4,5) //使用++=操作符,可以添加一個元素,或者多個元素 b++=Array(6,7,8,9) //使用trimEnd()函數,可以從尾部截斷指定個數的元素 b.trimEnd(5)
//使用insert()函數可以在指定位置插入元素
//但是這種操作效率很低,因為需要移動指定位置后的所有元素
b.insert(5,6)
b.insert(6,7,8,9,10)
//使用remove()函數可以移除指定位置元素
b.remove(1)
b.remove(1,3)
//Array與ArrayBuffer可以互相進行轉換
b.toArray
a.toBuffer

 

 

 遍歷Array和ArrayBuffer

//使用for循環和until遍歷Array/ArrayBuffer
/使用until是RichInt提供的函數
for(i <- 0 until b.length)
 println(b(i))
//跳躍遍歷Array/ArrayBuffer
for(i <- until (b.length,2))
println(b(i))
//從尾部遍歷Array/ArrayBuffer
for(i <- (0 until b.length).reverse)
print(b(i))
//使用"增強型for循環" 遍歷Array/AraayBuffer
for(e <- b)
print(e)

 

數組常見的操作:

//數組元素求和
val a = Array(1,2,3,4,5)
val sum = a.sum
//獲取數組最大值
val max = a.max
//對數組進行排序
scala.util.Sorting.quickSort(a)
//獲取數組中的所有元素類容
a.mkString
a.mkString(",")
a.mkString("<",",",">")

//toString函數
a.toString
b.toString

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM