在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组。此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组。列如字符串数组java的String[],整数的数组int[].
val a = new Array[Int](10) val a = new Array[String](10)
可以直接使用Array()创建数组,元素类型自动推断
val a = Array("Hello","world") a(0) ="hi" val a = Array("Hello",30) a: Array[Any]("Hello",30)
ArrayBuffer:
在Sacla中,如果需要类似于JAVA中的ArrayList这种可变长度的集合类,则可以使用ArrayBuffer.
#如果不想每次都是用完全限定名,则可以预先导入ArrayBuffer类 import scala.collection.mutable.ArrayBuffer //使用ArrayBuffer的方式可以创建一个空的ArrayBuffer val b = ArrayBuffer[Int]() //使用+=操作符,可以添加一个元素,或者多个元素
//这个语法必须谨记在心!因为Sprak源码里大量使用了这种集合操作语法! b+=1 b+=(2,3,4,5) //使用++=操作符,可以添加一个元素,或者多个元素 b++=Array(6,7,8,9) //使用trimEnd()函数,可以从尾部截断指定个数的元素 b.trimEnd(5)
//使用insert()函数可以在指定位置插入元素
//但是这种操作效率很低,因为需要移动指定位置后的所有元素
b.insert(5,6)
b.insert(6,7,8,9,10)
//使用remove()函数可以移除指定位置元素
b.remove(1)
b.remove(1,3)
//Array与ArrayBuffer可以互相进行转换
b.toArray
a.toBuffer
遍历Array和ArrayBuffer
//使用for循环和until遍历Array/ArrayBuffer /使用until是RichInt提供的函数 for(i <- 0 until b.length) println(b(i)) //跳跃遍历Array/ArrayBuffer for(i <- until (b.length,2)) println(b(i)) //从尾部遍历Array/ArrayBuffer for(i <- (0 until b.length).reverse) print(b(i)) //使用"增强型for循环" 遍历Array/AraayBuffer for(e <- b) print(e)
数组常见的操作:
//数组元素求和 val a = Array(1,2,3,4,5) val sum = a.sum //获取数组最大值 val max = a.max //对数组进行排序 scala.util.Sorting.quickSort(a) //获取数组中的所有元素类容 a.mkString a.mkString(",") a.mkString("<",",",">") //toString函数 a.toString b.toString