首頁技術(shù)文章正文

怎樣定義Scala數(shù)組?數(shù)組遍歷和數(shù)組轉(zhuǎn)換是怎樣操作的?

更新時間:2021-05-07 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

對于每一門編程語言,數(shù)組(Array)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,主要用來存儲數(shù)據(jù)類型相同的元素。下面,針對Scala數(shù)組的定義與使用、數(shù)組遍歷以及數(shù)組轉(zhuǎn)換操作進(jìn)行詳細(xì)介紹。

1.數(shù)組定義與使用

Scala中的數(shù)組分為定長數(shù)組和變長數(shù)組,這兩種數(shù)組的定義方式如下:

new Array[T](數(shù)組長度) //定義定長數(shù)組

ArrayBuffer[T]()    //定義變長數(shù)組

上述語法格式中,定義定長數(shù)組,需要使用new關(guān)鍵字,而定義變長數(shù)組時,則需要導(dǎo)包import scala.collection.mutable.ArrayBuffer。[T]表示的是數(shù)組元素的類型,T為泛型。

當(dāng)我們定義好數(shù)組后,可以對數(shù)組進(jìn)行追加、插入以及刪除等操作。針對不同的數(shù)組操作,Array提供了不同的API。

下面,我們通過一個例子來演示Scala數(shù)組簡單使用,具體代碼如文件1所示。

文件1 ArrayDemo.scala

   import scala.collection.mutable.ArrayBuffer

   object ArrayDemo {

     def main(args: Array[String]) {

       //初始化一個長度為8的定長數(shù)組,其所有元素均為0

       val arr1 = new Array[Int](8)

       //直接打印定長數(shù)組,內(nèi)容為數(shù)組的hashcode值

       println(arr1)

       //變長數(shù)組(數(shù)組緩沖)

       //如果使用數(shù)組緩沖,需要導(dǎo)入import scala.collection.mutable.ArrayBuffer

      val ab = ArrayBuffer[Int]()

      //向數(shù)組緩沖的尾部追加一個元素

      //+=尾部追加元素

      ab += 1

      println(ab)

      //追加多個元素

      ab += (2, 3, 4, 5)

      println(ab)

      //追加一個數(shù)組++=

      ab ++= Array(6, 7)

      println(ab)

       //追加一個數(shù)組緩沖

      ab ++= ArrayBuffer(8,9)

      println(ab)

      //打印數(shù)組緩沖ab

      //在數(shù)組某個位置插入元素用insert,從某下標(biāo)插入

      ab.insert(0, -1, 0)

      println(ab)

      //刪除數(shù)組某個位置的元素用remove按照下標(biāo)刪除

      ab.remove(0)

      println(ab)

    }

  }
上述代碼中,第5-7行代碼定義了一個定長數(shù)組arr1并打印數(shù)組對象;第10-30行代碼定義了一個變長數(shù)組ab并對數(shù)組對象進(jìn)行了追加、插入和刪除等操作。

運(yùn)行文件1中的代碼,控制臺輸出結(jié)果如圖1所示。

數(shù)組的定義與使用數(shù)組遍歷以及數(shù)組轉(zhuǎn)換操作

圖1 Scala數(shù)組定義與使用的輸出結(jié)果

2.數(shù)組遍歷

Scala中,如果想要獲取數(shù)組中的每一個元素,則需要將數(shù)組進(jìn)行遍歷操作。數(shù)組的遍歷有三種方式,分別是for循環(huán)遍歷、while循環(huán)遍歷以及do...while循環(huán)遍歷。在這里,我們使用for循環(huán)對數(shù)組進(jìn)行遍歷操作。具體代碼如文件2所示。

文件2 ArrayTraversal.scala

   object ArrayTraversal {

     def main(args: Array[String]) {

       var myArr = Array(1.9, 2.9, 3.4, 3.5)

       // 打印輸出所有的數(shù)組元素

       for (x <- myArr) {

         print(x + " ")

       }

       //打印換行

       println()

      // 計算數(shù)組所有元素的總和

      var total = 0.0;

      for (i <- 0 to (myArr.length - 1)) {

        total += myArr(i);

      }

      println("總和為 " + total);

      // 查找數(shù)組中的最大元素

      var max = myArr(0);

      for (i <- 1 to (myArr.length - 1)) {

        if (myArr(i) > max) max = myArr(i);

      }

      println("最大值為 " + max);

    }

  }

上述代碼中,第3-7行代碼定義了一個定長數(shù)組myArr并通過遍歷打印該數(shù)組;第11-15行代碼定義一個變量total并賦值為0.0,通過遍歷計算數(shù)組所有元素的總和;第17-21行定義了一個變量max并賦值為數(shù)組myArr中的第一個元素,通過遍歷查找出myArr數(shù)組中的最大元素。

運(yùn)行文件2中的代碼,控制臺輸出結(jié)果如圖2所示。

數(shù)組的定義與使用數(shù)組遍歷以及數(shù)組轉(zhuǎn)換操作

圖2 遍歷數(shù)組的控制臺打印輸出

3.數(shù)組轉(zhuǎn)換

數(shù)組轉(zhuǎn)換就是通過yield關(guān)鍵字將原始的數(shù)組進(jìn)行轉(zhuǎn)換,會產(chǎn)生一個新的數(shù)組,然而原始的數(shù)組保持不變。下面我們來演示數(shù)組的轉(zhuǎn)換,定義一個數(shù)組,實現(xiàn)將偶數(shù)取出乘以10后生成一個新的數(shù)組,具體代碼如文件3所示。

文件3 ArrayYieldTest.scala

   object ArrayYieldTest {

     def main(args: Array[String]) {

       //定義一個數(shù)組

       val arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

       //將偶數(shù)取出乘以10后再生成一個新的數(shù)組

       val newArr = for (e <- arr if e % 2 == 0) yield e * 10

       println(newArr.toBuffer)

     }

   }

上述代碼中,第4-7行代碼定義了一個定長數(shù)組arr并通過求偶和算術(shù)操作,將數(shù)組arr轉(zhuǎn)換成一個新數(shù)組newArr,最終打印newArr數(shù)組。

運(yùn)行文件3中的代碼,控制臺輸出結(jié)果如圖3所示。

數(shù)組的定義與使用數(shù)組遍歷以及數(shù)組轉(zhuǎn)換操作
圖3 數(shù)組轉(zhuǎn)換的控制臺輸出





猜你喜歡:

Scala的方法和函數(shù)講解【黑馬程序員】

如何使用IDEA工具開發(fā)Scala程序?

Scala是什么?Scala發(fā)展歷程簡介    

黑馬程序員Python+大數(shù)據(jù)培訓(xùn)

分享到:
在線咨詢 我要報名
和我們在線交談!