scala–数组
scala的集合分为了两类,一类是可变的集合(集合可以执行增删改查操作),另一类是不可变集合(集合元素在初始化的时候确定,后续只能进行查,有的可以进行修改,有的不可以)。二者可能名称一样,但是在不同的包下面,对应的包为:scala.collection.mutable和scala.collection.immutable。
scala默认使用的集合,或者默认导入的包是immutable。
1. 不可变数组Array
Array可以理解为java中的数组。
-
数组的定义
//创建数组 //int[] a = new int[5]; val arr = new Array[Boolean](3) for(a <- arr) { println(a) } println("-------------------") //叫做数组类Array的伴生对象的创建方式 val arr1 = Array[Int](1, 2, 3, 4, 5) // int[] a = {1 , 2, 3, 4, 5} for(a <- arr1) { println(a) }
-
获取数组中的元素
println("----------获取数组中的元素--------------") println("获取arr1中index为3的元素:" + arr1(3)) arr1(3) = -3 println("获取arr1中index为3的元素:" + arr1(3))
-
元素的遍历
println("--普通的for--") for(a <- arr1) { println(a) } println("--foreach--") arr1.foreach(a => println(a))
-
数组的长度
println("length: " + arr1.length) /** The length of the array */ def length: Int = throw new Error()
2. 可变数组ArrayBuffer
ArrayBuffer就可以理解为java中的ArrayList。
-
定义
//两种创建方式 //普通的创建方式,创建一个初始化长度为3的Int类型的ArrayBuffer var ab = new ArrayBuffer[Int](3) //使用ArrayBuffer的伴生对象创建类型为Int的ArrayBuffer ab = ArrayBuffer[Int]()
-
crud
//追加元素---(尾部追加元素)append ab.append(1, 2, 3) println("ab: " + ab) //insert(index, 元素*)在指定的位置插入元素 ab.insert(1, -2, -1) println("ab: " + ab) //修改 ab(2) = 0 println("ab: " + ab) //删除 ab.remove(2)//删除下标对应的元素 println("ab: " + ab) ab.remove(1, 2) println("ab: " + ab) ab.insert(1, -2, -1, 0, 1, 2) println("ab: " + ab) ab = ab.drop(2)//从首部开始删除N个元素,并返回一个新集合,原集合不变 println("ab: " + ab) ab = ab.dropRight(2)//从尾部开始删除N个元素,并返回一个新集合,原集合不变 println("ab: " + ab)
-
遍历和长度
遍历和Array方式一样。
长度可以使用length,也可以使用size。
3. Array和ArrayBuffer的一些基本通用操作
-
包含
ab.contains(3)
-
数组求和
ab.sum
-
数组的最大值最小值
ab.max ab.min
-
Array和ArrayBuffer之间的互相转换
Array--->ArrayBuffer array.toBuffer ArrayBuffer--->Array ab.toArray
-
数组内容的显示
//mkString的方法 将数组元素使用分隔符串成一个字符串 println(ab.mkString(","))//分割符为, println(ab.mkString("[", ", ", "]"))//分割符为,起始结束符号分别为[, ]