Scala陣列操作
轉載自:Scala陣列操作
Scala陣列操作:
1.定長陣列
長度不變的陣列的宣告:- //長度為10的整數陣列,所有元素初始化為0
- val numArr = new Array[Int](10)
- //長度為10的字串陣列,所有元素初始化為null
- val numArr = new Array[String](10)
- //長度為2的陣列,資料型別自動推斷出來,已經提供初始值就不需要new關鍵字
- val s = Array("cai","yong")
- //通過ArrayName(index)訪問陣列元素和更改陣列元素
- val s = Array("cai","yong")
- println(s(0))
- s(0) = "haha"
- println(s(0))
cai
haha
2.變長陣列:陣列緩衝
Scala也支援長度變化的陣列,支援的資料結構是ArrayBuffer- //一個空的陣列緩衝,準備存放整數
- val ab = ArrayBuffer[Int]()
- val ab2 = new ArrayBuffer[Int]
- //用+=在尾部新增元素
- ab += 2
- //在尾部新增多個元素
- ab += (1,2,3,4,5)
- //通過++=往陣列緩衝後面追加集合
- ab ++= Array(6,7,8,9)
- //使用trimEnd(n)移除尾部n個元素
- ab.trimEnd(3)
- //在下標3之前插入元素
- ab.insert(3, 33)
- //插入多個元素,第一個值為index,後面所有的值為要插入的值
- ab.insert(3,3,4,5,6)
- //移除某個位置的元素
- ab.remove(3)
- //移除從下標為n開始(包括n)的count個元素
- ab.remove(n, count)
有時候需要構造一個Array,但是不知道具體要存放多少元素,可以先構造ArrayBuffer,再呼叫toArray方法轉化成Array,同樣,對Array呼叫toBuffer方法可以轉成ArrayBuffer.
注:在陣列緩衝的尾部進行元素新增移除操作的效率很高,但是在任意位置插入或移除元素的效率並不太高效,因為涉及到陣列元素的移動。
3.遍歷陣列
- //for迴圈遍歷
- for(i <- 0 until ab.length){
- print(ab(i) + ", ")
- }
- //根據特定步長遍歷陣列
- for(i <- 0 until (ab.length, 2)){
- print(ab(i) + ", ")
- }
- //從陣列的尾部開始向前遍歷陣列
- for(i <- (0 until ab.length).reverse){
- print(ab(i) + ", ")
- }
- //類似於Java中的foreach遍歷陣列
- for(elem <- ab){
- print(elem + ", ")
- }
4.陣列轉換
- //進行陣列轉換會生成一個新的陣列,而不會修改原始陣列
- val change = for(elem <- ab) yield elem * 2
- for(elem <- change){
- print(elem + ", ")
- }
- //新增一個守衛的陣列轉換
- val change = for(elem <- ab if elem%2 == 0) yield elem * 2
5.陣列操作常用演算法
- //sum求和(陣列與阿奴必須是數值型資料)
- println(change.sum)
- //min max 輸出陣列中最小和最大元素
- println(change.min)
- println(change.max)
- //使用sorted方法對陣列或陣列緩衝進行升序排序,這個過程不會修改原始陣列
- val sortArr = ab.sorted
- for(elem <- sortArr)
- print(elem + ", ")
- //使用比較函式sortWith進行排序
- val sortArr = ab.sortWith(_>_)
- //陣列顯示
- println(sortArr.mkString("|"))
- println(sortArr.mkString("startFlag","|","endFlag"))
6.多維陣列
- //構造一個2行3列的陣列
- val arr = Array.ofDim[Int](2,3)
- println(arr.length)
- println(arr(0).length)
- arr(0)(0) = 20
- println(arr(0)(0))
- //建立長度不規則的陣列
- val arr = new Array[Array[Int]](3)
- for(i <- 0 until arr.length){
- arr(i) = new Array[Int](i + 2)
- }
- for(i <- 0 until arr.length){
- println(arr(i).length)
- }
相關文章
- scala陣列與java陣列對比陣列Java
- scala語法 -多維陣列陣列
- Scala陣列、元組與集合陣列
- 陣列操作陣列
- 陣列的reduce操作+物件陣列的map操作陣列物件
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- 使用陣列實現環形佇列Scala版本陣列佇列
- javascript陣列操作JavaScript陣列
- Numpy陣列操作陣列
- JavaScript 陣列操作JavaScript陣列
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- JS常用陣列操作JS陣列
- 對陣列的操作陣列
- JavaScript陣列常用操作JavaScript陣列
- 陣列的基本操作陣列
- Python陣列常用操作Python陣列
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- 初識Java(Java陣列-陣列的基本操作)Java陣列
- 陣列的操作-變形陣列
- Scala操作Map
- scala 列舉
- JS常用陣列操作全解析JS陣列
- JavaScript 陣列常見操作 (二)JavaScript陣列
- JavaScript 陣列常見操作(一)JavaScript陣列
- C++ 獲取陣列大小、多維陣列操作詳解C++陣列
- js陣列操作方法小結JS陣列
- GO 陣列操作四個小案例Go陣列
- 1441 用棧操作構建陣列陣列
- [NOIP 2024 模擬2]陣列操作陣列
- PHP:常用PHP陣列操作函式PHP陣列函式
- NumPy之:ndarray多維陣列操作陣列
- 樹狀陣列3種基本操作陣列
- 陣列及陣列物件操作 ----------包括排序,去重,合併,翻轉等陣列物件排序
- javascript中常用的陣列操作方法,以及是否會改變原始陣列JavaScript陣列
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- Kotlin 控制流和陣列操作詳解Kotlin陣列
- javascript中shift()、unshift()、push()、pop() 陣列操作JavaScript陣列