Scala中怎么定长数组

这篇文章主要讲解了“Scala中怎么定长数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala中怎么定长数组”吧!

创新互联建站专业提供温江服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买温江服务器托管服务,并享受7*24小时金牌售后服务。

1. 定长数组

创建一个定长数组的方式

Scala中怎么定长数组

使用Array定义一个长度不变的数组

object ArrayDemo {
  def main(args: Array[String]){
    //初始化一个长度为8的定长数组,其所有元素均为0
    val arr1 = new Array[Int](8)
    //直接打印定长数组,内容为数组的hashcode值
    println(arr1)
    //将数组转换成数组缓冲,就可以看到原数组中的内容了
    //toBuffer会将数组转换长数组缓冲
    println(arr1.toBuffer)

    //注意:如果不使用new获取数组,相当于调用了数组的apply方法,直接为数组赋值
    //初始化一个长度为1,值为10的定长数组
    val arr2 = Array[Int](10)
    //输出数组元素值
    println(arr2.toBuffer)

    //定义一个长度为3的定长数组
    val arr3 = Array("hadoop", "storm", "spark")
    //使用()来访问元素
    println(arr3(2))

    //包含10个整数的数组,初始化值为0 
    val nums = new Array[Int](10)
    //遍历数组
    for(i <- 0 until nums.length)
      print(s"$i:${nums(i)} ")
      println()

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

    //赋初值的字符串数组
    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中怎么定长数组

2. 变长数组

定义变长数组的方式:

Scala中怎么定长数组

使用 ArrayBuffer定义长度按需变化的数组。

import scala.collection.mutable.ArrayBuffer

object VarArrayDemo {
  def main(args: Array[String]){
    //定义一个空的可变长Int型数组
    val nums =  ArrayBuffer[Int]()

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

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

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

   //这些操作符,有相应的 -= ,--=可以做数组的删减,用法同+=,++=
      
   //使用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循环进行数组遍历   
    for(elem <- nums)
      println(elem)
      
    //基于下标访问使用增强for循环进行数组遍历
    for(i <- 0 until nums.length)
      println(nums(i))

  }
}

执行结果:

Scala中怎么定长数组

3. 遍历数组

1.增强for循环,参见变长数组的代码

2.好用的until会生成脚标,0 until 10 包含0不包含10 参见定长数组部分代码4.1.4. 数组转换

4. 数组转换

yield关键字将原始的数组进行转换会产生一个新的数组,原始的数组不变

bject ArrayTransfer {

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

    //使用for推导式生成一个新的数组
    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()

    //对原数组元素过滤后生成一个新的数组
    //将偶数取出乘以10后再生成一个新的数组
    val res2 = for(elem <- a if elem%2 == 0)yield 2*elem
    for(elem <- res2)
      print(elem+" ")
    println()

    //使用filter和map转换出新的数组
    val res3 = a.filter(_ % 2 == 0).map(2 * _)
    for(elem <- res3)
      print(elem+" ")
    println()
  }

执行结果:

Scala中怎么定长数组

5. 数组常用算法

在Scala中,数组上的某些方法对数组进行相应的操作非常方便!

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 + " ")
  }
}

执行结果:

Scala中怎么定长数组

感谢各位的阅读,以上就是“Scala中怎么定长数组”的内容了,经过本文的学习后,相信大家对Scala中怎么定长数组这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享标题:Scala中怎么定长数组
本文网址:http://pwwzsj.com/article/pcesgo.html