scala中默认使用的都是不可变集合
scala中可变和不可变集合几乎都有对应的版本
不可变集合,容量固定;可变集合,可以扩展。
- 数组Array、ArrayBuffer
定长数组
//定义
val arr1= new Array[Int](10)
println(arr1.mkString(","))
//隐式调用apply方法
val arr2= Array(1,2,3)
println(arr2.mkString(","))
//取值:返回数组中下标为2的值
println(arr2.apply(2))
//赋值
arr2(1)=10
arr2.update(1, 10)
println(arr2.mkString(","))
//追加
//:对着哪边,则追加哪个
val arr3= arr1 :+ "????"
val arr4= "????" +: arr1
println(arr3.mkString(","))
println(arr4.mkString(","))
变长数组
/**
* 变长数组
* 在括号内指定数组元素
* */
val arrBuffer1= ArrayBuffer[Int](10,9,8)
println(arrBuffer1)
//赋值,取值
arrBuffer1(1)=1
println(arrBuffer1(1))
println(arrBuffer1.apply(2))
//追加
arrBuffer1.append(1,2,3)
println(arrBuffer1)
多维数组
/**
* 多维数组3行4列,定长的
* */
val array1= Array.ofDim[Int](3,4)
println(array1.mkString(","))//返回数组地址
//赋值
array1(1)(2)=1
for(x<-array1){
println(x.mkString(","))//输出数组值
}
//追加,其实为合并数组,只能追加一维数组,若是二维数组,会将其看做一维数组进行追加
val array2 =array1 :+ Array.ofDim[Int](3,4)
for(x<-array2){
println(x.mkString(","))//输出数组值
}
val array3 =array1 :+ Array(1,2,3,5)
for(x<-array3){
println(x.mkString(","))//输出数组值
}
Scala与Java数组的转换
/**
* Scala与java的互相转换
* */
import scala.collection.JavaConversions.bufferAsJavaList
val array4 = ArrayBuffer("1","2","3")
val javaArr = new ProcessBuilder(array4)
println(javaArr.command())//javalist返回集合
javaArr.command().add("10")
println(javaArr.command())
import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable.Buffer
val scalaArr:Buffer[String] = javaArr.command()
println(scalaArr)