Scala數組操作__Scala數組操作

來源:互聯網
上載者:User
Scala數組操作: 1.定長數組 長度不變的數組的聲明:
//長度為10的整數數組,所有元素初始化為0 val numArr = new Array[Int](10)//長度為10的字串數組,所有元素初始化為nullval 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 * 2for(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) = 20println(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》  [美]Cay S. Horstmann著   電子工業出版社****************





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.