Scala中怎么定長數(shù)組

這篇文章主要講解了“Scala中怎么定長數(shù)組”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Scala中怎么定長數(shù)組”吧!

創(chuàng)新互聯(lián)建站專業(yè)提供溫江服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買溫江服務(wù)器托管服務(wù),并享受7*24小時金牌售后服務(wù)。

1. 定長數(shù)組

創(chuàng)建一個定長數(shù)組的方式

Scala中怎么定長數(shù)組

使用Array定義一個長度不變的數(shù)組

object ArrayDemo {
  def main(args: Array[String]){
    //初始化一個長度為8的定長數(shù)組,其所有元素均為0
    val arr1 = new Array[Int](8)
    //直接打印定長數(shù)組,內(nèi)容為數(shù)組的hashcode值
    println(arr1)
    //將數(shù)組轉(zhuǎn)換成數(shù)組緩沖,就可以看到原數(shù)組中的內(nèi)容了
    //toBuffer會將數(shù)組轉(zhuǎn)換長數(shù)組緩沖
    println(arr1.toBuffer)

    //注意:如果不使用new獲取數(shù)組,相當于調(diào)用了數(shù)組的apply方法,直接為數(shù)組賦值
    //初始化一個長度為1,值為10的定長數(shù)組
    val arr2 = Array[Int](10)
    //輸出數(shù)組元素值
    println(arr2.toBuffer)

    //定義一個長度為3的定長數(shù)組
    val arr3 = Array("hadoop", "storm", "spark")
    //使用()來訪問元素
    println(arr3(2))

    //包含10個整數(shù)的數(shù)組,初始化值為0 
    val nums = new Array[Int](10)
    //遍歷數(shù)組
    for(i <- 0 until nums.length)
      print(s"$i:${nums(i)} ")
      println()

    //包含10個字符串的數(shù)組,初始化值為null
    val strs0 = new Array[String](10)
    for(i <- 0 until strs0.length)
      print(s"$i:${strs0(i)} ")
      println()

    //賦初值的字符串數(shù)組
    val strs1 = Array("hello" ,"world")
    for(i <- 0 until strs1.length)
      print(s"$i:${strs1(i)} ")
      println()

    //訪問并修改元素值
    strs1(0) = "byebye"
    for(i <- 0 until strs1.length)
      print(s"$i:${strs1(i)} ")
      println()

  }
}

result

Scala中怎么定長數(shù)組

2. 變長數(shù)組

定義變長數(shù)組的方式:

Scala中怎么定長數(shù)組

使用 ArrayBuffer定義長度按需變化的數(shù)組。

import scala.collection.mutable.ArrayBuffer

object VarArrayDemo {
  def main(args: Array[String]){
    //定義一個空的可變長Int型數(shù)組
    val nums =  ArrayBuffer[Int]()

    //在尾端添加元素
    nums += 1

    //在尾端添加多個元素
    nums += (2,3,4,5)

    //使用++=在尾端添加任何集合
    nums ++= Array(6,7,8)

   //這些操作符,有相應(yīng)的 -= ,--=可以做數(shù)組的刪減,用法同+=,++=
      
   //使用append追加一個或者多個元素
    nums.append(1)
    nums.append(2,3)
      
   //在下標2之前插入元素
    nums.insert(2,20)
    nums.insert(2,30,30)    

    //移除最后2元素
    nums.trimEnd(2)
    //移除最開始的一個或者多個元素
    nums.trimStart(1)
   
    //從下標2出移除一個或者多個元素
    nums.remove(2)
    nums.remove(2,2)
      
      
   //使用增強for循環(huán)進行數(shù)組遍歷   
    for(elem <- nums)
      println(elem)
      
    //基于下標訪問使用增強for循環(huán)進行數(shù)組遍歷
    for(i <- 0 until nums.length)
      println(nums(i))

  }
}

執(zhí)行結(jié)果:

Scala中怎么定長數(shù)組

3. 遍歷數(shù)組

1.增強for循環(huán),參見變長數(shù)組的代碼

2.好用的until會生成腳標,0 until 10 包含0不包含10 參見定長數(shù)組部分代碼4.1.4. 數(shù)組轉(zhuǎn)換

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

yield關(guān)鍵字將原始的數(shù)組進行轉(zhuǎn)換會產(chǎn)生一個新的數(shù)組,原始的數(shù)組不變

bject ArrayTransfer {

  def main(args: Array[String]): Unit = {

    //使用for推導(dǎo)式生成一個新的數(shù)組
    val a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
    val res1 = for(elem <- a) yield 2*elem
    for(elem <- res1)
      print(elem+" ")
    println()

    //對原數(shù)組元素過濾后生成一個新的數(shù)組
    //將偶數(shù)取出乘以10后再生成一個新的數(shù)組
    val res2 = for(elem <- a if elem%2 == 0)yield 2*elem
    for(elem <- res2)
      print(elem+" ")
    println()

    //使用filter和map轉(zhuǎn)換出新的數(shù)組
    val res3 = a.filter(_ % 2 == 0).map(2 * _)
    for(elem <- res3)
      print(elem+" ")
    println()
  }

執(zhí)行結(jié)果:

Scala中怎么定長數(shù)組

5. 數(shù)組常用算法

在Scala中,數(shù)組上的某些方法對數(shù)組進行相應(yīng)的操作非常方便!

object ArrayAlgorithm {
  def main(args: Array[String]): Unit = {

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

    //求和
    val res1 = a.sum
    println(res1)

    //求最大值
    val res2 = a.max
    println(res2)

    //排序
    val res3 = a.sorted
    // val res4 = a.sortWith(_>_)指定排序方式
    for(elem <- res3)
      print(elem + " ")
  }
}

執(zhí)行結(jié)果:

Scala中怎么定長數(shù)組

感謝各位的閱讀,以上就是“Scala中怎么定長數(shù)組”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Scala中怎么定長數(shù)組這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

新聞名稱:Scala中怎么定長數(shù)組
當前路徑:http://bm7419.com/article10/pcesgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護網(wǎng)站制作、品牌網(wǎng)站制作、網(wǎng)站改版、建站公司、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司