scala學習筆記-Array、ArrayBuffer以及遍歷數組(7)


Array

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

 1 // 數組初始化后,長度就固定下來了,而且元素全部根據其類型初始化
 2 val a = new Array[Int](10)
 3 a(0)
 4 a(0) = 1
 5 val a = new Array[String](10)
 6 
 7 // 可以直接使用Array()創建數組,元素類型自動推斷
 8 val a = Array("hello", "world")
 9 a(0) = "hi"
10 val a = Array("leo", 30)

ArrayBuffer

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

 1 // 如果不想每次都使用全限定名,則可以預先導入ArrayBuffer類
 2 import scala.collection.mutable.ArrayBuffer
 3 // 使用ArrayBuffer()的方式可以創建一個空的ArrayBuffer
 4 val b = ArrayBuffer[Int]()
 5 // 使用+=操作符,可以添加一個元素,或者多個元素
 6 // 這個語法必須要謹記在心!因為spark源碼里大量使用了這種集合操作語法!
 7 b += 1
 8 b += (2, 3, 4, 5)
 9 // 使用++=操作符,可以添加其他集合中的所有元素
10 b ++= Array(6, 7, 8, 9, 10)
11 // 使用trimEnd()函數,可以從尾部截斷指定個數的元素
12 b.trimEnd(5)

ArrayBuffer

// 使用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

 1 // 使用for循環和until遍歷Array / ArrayBuffer
 2 // 使until是RichInt提供的函數
 3 for (i <- 0 until b.length)
 4   println(b(i))
 5 // 跳躍遍歷Array / ArrayBuffer
 6 for(i <- 0 until (b.length, 2))
 7   println(b(i))
 8 // 從尾部遍歷Array / ArrayBuffer
 9 for(i <- (0 until b.length).reverse)
10   println(b(i))
11 // 使用“增強for循環”遍歷Array / ArrayBuffer
12 for (e <- b)
13   println(e)

數組常見操作

 1 // 數組元素求和
 2 val a = Array(1, 2, 3, 4, 5)
 3 val sum = a.sum
 4 // 獲取數組最大值
 5 val max = a.max
 6 // 對數組進行排序
 7 scala.util.Sorting.quickSort(a)
 8 // 獲取數組中所有元素內容
 9 a.mkString
10 a.mkString(", ")
11 a.mkString("<", ",", ">")
12 // toString函數
13 a.toString
14 b.toString

 


免責聲明!

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



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