scala中的Array

21 阅读2分钟

一.Array的定义

类型有两种:Array表示长度不可变的数组 和 ArrayBuffer表示长度可变的数组

package array
/**
 * Array 和 List 的区别
 * Array:有序,链表,元素在空间上连续,通过下标去访问元素会特别快
 *  List:有序,链表,元素在空间上不连续
 *
 * 两种类型:可变 , 不可变
 * 不可变:一个数组创建之后,不能添加,不能删除
 * 常用方法, 添加,删除,查找,循环,排序.....
 */
object array01 {
  def main(args: Array[String]): Unit = {
    //可变数组
    val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3);
    //可以直接添加元素
    arr1 += 4
    println(arr1)
    //不可变数组
    val arr2 = Array(1,2,3)
    //不可变,不能直接添加元素
   // arr2 += 4 // 报错
    println(arr2)
  }
}

image.png 二.不可变数组

Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。

package array
object array02 {
  def main(args: Array[String]): Unit = {
//    Array(1,2,3)
//    val arr = Array.range(1,100)
//    arr.foreach(println)// 1-99
//    val arr = Array.range(1,100,3)//3 步长
//    arr.foreach(println)
    val arr1= Array(1,2,3)
    //访问数组元素
    println(arr1(0))//第一个元素
    println(arr1(2))//第三个元素
    println(arr1(20))//报错:数组越界!第22个元素,java.lang.ArrayIndexOutOfBoundsException:
  }
}

image.png 三.可变数组

1.添加元素

2.删除元素

package array
/**
 * 常用方法:
 *     添加 +=
 *     删除,查找,循环,排序.....
 */
object array03 {
  def main(args: Array[String]): Unit = {
    //可变数组
    val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3)
    //添加
    arr1 += 4
    arr1 += (5,6,7)
    //删除
    arr1 -= 4
    //删除某个下下标上的元素
 //  arr1.remove(0)
    arr1.remove(0,3)//从指定位置开始删除,删除几个?
    //修改
    arr1(2) = 700
    //判断是否存在
    println(arr1.contains(6))//true
    println(arr1.contains(8))//false
    println(arr1.sum)//求和
    arr1.foreach(ele=> println(ele))
  }
}

image.png

package array
object array04 {
  def main(args: Array[String]): Unit = {
    //可变数组
    val arr1 = scala.collection.mutable.ArrayBuffer(-1,2,0,-1,20,3)
    //排序
    val arr2 = arr1.sortWith((a,b)=>a>b)
    //切片:只取整个数组中的某个部分 slice
    val arr3 = arr1.slice(0,3)
      //过滤
    val arr4 = arr1.filter(a => a >0)
    //搜索位置:检查某个元素的下标

    val target = -2
    val result = arr1.indexOf(target)//如果没找到这个元素,就返回-1
println(s"${target}的下标是 ${result}")
    arr4.foreach(ele => println(ele))
  }
}

image.png