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>
}