溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-12-09 09:28:32 來源:億速云 閱讀:404 作者:iii 欄目:編程語言

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

1. 定長數(shù)組

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

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

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

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

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

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

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

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

    //賦初值的字符串?dāng)?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]){
    //定義一個(gè)空的可變長Int型數(shù)組
    val nums =  ArrayBuffer[Int]()

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

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

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

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

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

  }
}

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

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

3. 遍歷數(shù)組

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

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

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

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

bject ArrayTransfer {

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

    //使用for推導(dǎo)式生成一個(gè)新的數(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()

    //對(duì)原數(shù)組元素過濾后生成一個(gè)新的數(shù)組
    //將偶數(shù)取出乘以10后再生成一個(gè)新的數(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ù)組上的某些方法對(duì)數(shù)組進(jìn)行相應(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í)后,相信大家對(duì)Scala中怎么定長數(shù)組這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI