scala学习笔记之数组

这篇博客介绍了Scala中的数组操作,强调数组索引从0开始,并且提供了访问数组元素的方法。此外,还提到了Scala数组与Java的不同之处,以及如何在Scala中创建数组缓存。
摘要由CSDN通过智能技术生成

scala数组角标从0开始,使用(index)访问元素,和java不同,可以创建一个数组缓存

object ArrayDemo extends App {
  //数组的声明
  //  var z:Array[String] = new Array[String](3)
  //  var z = new Array[String](3)
  var array1 = Array(1, 2, 1.5, "abc");
  var array2 = new Array[String](1); //定义数组的另一种方式,角标是从0开始的
  // apply( x: T, xs: T* ): Array[T]创建指定对象 T 的数组
  var array3 = Array.apply(1, 2, 3)
  array2(0) = "hehe" //数组的赋值

  //数组的合并Array.concat
  var concatArray = Array.concat(array2, array2)

  //二维数组->多维数组
  //def ofDim[T]( n1: Int ): Array[T]创建指定长度的数组
  //def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]创建二维数组
  //def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]创建三维数组
  var manyDimensions1 = Array((1, 2, 3), (4, 5, 6))
  var manyDimensions2 = new Array[Array[String]](3)
  var manyDimensions3 = Array.ofDim[String](3, 2)
  manyDimensions2(0) = Array("ee") //赋值
  manyDimensions3(0)(1) = "String" //赋值

  //empty[T]: Array[T]返回长度为 0 的数组
  var emotyArr = Array.empty[String]

  //range( start: Int, end: Int, step: Int ): Array[Int]创建指定区间内的数组,step 为每个元素间的步长
  //range( start: Int, end: Int ): Array[Int]创建指定区间内的数组
  var a1 = Array.range(0, 10)
  var a2 = Array.range(0, 10, 2)

  //变长数组:缓冲数组
  //import scala.collection.mutable.ArrayBuffer
  var bufferArray = new ArrayBuffer[Int](); //()可以省略
  bufferArray += 1 //在末尾添加一个值或多个值      高效的添加
  bufferArray += (1, 2, 3) //在末尾添加一个值或多个值
  bufferArray ++= Array(1, 2, 3) //在末尾添加一个值或多个值,如果是集合,就需要用++=
  bufferArray.trimEnd(3) //移除末尾的3个数
  bufferArray.insert(2, 2) //指定角标位置添加一个或多个数                                  //效率偏低
  bufferArray.insertAll(2, Array(2, 3, 4)) //指定角标位置添加一个集合    //效率偏低
  bufferArray.remove(2) //移除哪个元素
  bufferArray.remove(2, 2) //从第2个角标开始移除2个元素

  //遍历数组
  for (a <- array1) { //直接遍历数组
    println(a)
  }
  for (i <- 0 until array1.length) { //使用下表遍历数组
    println(array1(i))
  }
  for (i <- 0 until (array1.length, 2)) { //从0开始没2个循环一次
    println(array1(i))
  }
  for (i <- (0 until array1.length).reverse) { //倒序遍历
    println(array1(i))
  }
  val iter = array1.iterator; //使用迭代器
  while (iter.hasNext) {
    println(iter.next())
  }

  //数组的转换

  var newArray1 = for (a <- array1 if a != 1) yield (a + "aaa") //方式1,除了值为1的所有元素都加上aaa
  var newArray2 = array1.filter { _ != 1 }.map { _ + "bbb" }    //方式2
  var newArray3 = array1.filter { _ != 1 } map { _ + "bbb" }    //方式3

  //数组的常用算法
  var array4 = Array.apply(1, 5, 6, 4, 5)
  var sum = array4.sum //求和
  var max = array4.max //求最大值
  var min = array4.min //求最小值
  val sortArray = array4.sorted    //排序
  var s1 = array4.mkString("and")                //result  1 and 2 and 3 and 4 and 5
  var s2 = array4.mkString("<", "and", ">")      //result  <1 and 2 and 3 and 4 and 5>

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值