scala 入门(2)--数组相关操作
scala 無論從數組的定義還是操作方面來說都跟java非常相似,但又有其獨特的強大之處…
1、 定長數組
對于長度不變的數組,可以用scala中的Array。
//scala 里使用new實例化對象。 實例化過程中,可以用值和類型使對象參數化(創建對象的同時完成對它的設置)
val nums = new Array[Int](5); //含5個整數的數組,元素默認初始化為0;
val arr = new Array[String](10); //含10個字符串的數組,元素默認初始化為null;
arr(0) = “hello”; //數據賦值
val s = Array("hello", "world"); //長度為2的String數組。類型:自動推斷。
注: jvm 中 scala的Array 是以 java數組的方式實現。 示例中的s 在jvm中的類型為 java.lang.String[];
2、變長數組
對于長度可變的數組,可以用scala中的ArrayBuffer。相應java中有ArrayList。
val nums = ArrayBuffer[Int]();
或
val nums = new ArrayBuffer[Int] //一個空數組,準備存放整數。
nums += 1; //ArrayBuffer(1); 用+=在尾端添加元素。
nums +=(2,3,4,5) // ArrayBuffer(1,2,3,4,5); 在尾端添加多個元素。
nums ++=Array(6,7,8) //ArrayBuffer(1,2,3,4,5,6,7,8) ++= 可以用來追加任何集合
nums.trimEnd(5) //ArrayBuffer(1,2,3) 移除最后五個元素。
nums.insert(2, 4) //ArrayBuffer(1,2,4,3) 在下標2 前加一個元素 4;
nums.insert(2, 5, 6) //ArrayBuffer(1,2,5,6,4,3) 在下標2前插入多個元素
nums.remove(3) //ArrayBuffer(1,2,5,4,3) 移除第三個元素 (下標從0 始)
nums remove(2, 2)//ArrayBuffer(1,2, 3) 移除從第二個元素始的2個元素;
可變長數組轉換為定長數據只用掉用其toArray方法。如 nums.toArray;
反過來,調用 a.toBuffer;
3、遍歷數組和數組緩沖
scala數組(數組緩沖)的遍歷,可以用for循環進行。如:
for(i <- 0 until a.length)
println(a(i));
//變量i 取 0 到 a.length; until 是 RichInt類的方法, 返回小于上限的方法。
4、數組轉換
前邊講述了如何像Java那樣操作數組。不過在scala中,數組還有更強大的功能。如過濾,轉換等。例:
val a = Array(1,2,3,5,7);
val result = for(elem <- a) yield 2 * elem;
//result = Array(2,4,6,10,14); 此處轉變并不會改變原數組的值,而是產生一個全新的數組。即for() yield 創建一個類型與原始集合相同的新集合。 數集合中的元素包含yield 之后的表達式的值,每個循環對應一個。
另外對集合處理時,你若只想處理滿足條件的特定元素,這個需求可以通過守衛:for中的if 來實現。 若對a中奇數翻倍,則
for(elem <- a if elem % 2 == 1) yield 2 * elem;
5、常用算法
Array(1,2,4,6).sum //計算數組的值
Array(1,4,2,6).sorted(_ < _); //排序 不改變原數組的值。
另外還有 append , appendAll, count, copyToArray, max等方法
總結
以上是生活随笔為你收集整理的scala 入门(2)--数组相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: string转JSONObject顺序不
- 下一篇: macOS Big Sur 设置JAVA