Scala的Seq之Array和ArrayBuffer集合(11.14)
Scala中的对应Java中的T[],例如Array[String]对应String[].Scala 的Array与Java中的不同点为Scala中的Array可以作为序列使用,通过隐式转换的方式把Scala中的数组转换成序列。当定义一个不可变数组时会传递一个数组的长度,表示数组长度不可变。当定义可变数组是,可以不传递数组的长度,Scala会分配一个默认的长度。T表示定义数组的类型,n表示指定数组
1.Scala的Array
Scala的Array表示长度不可变的数组,Array与Java中的大部分功能相同。Scala中的对应Java中的T[],例如Array[String]对应String[].Scala 的Array与Java中的不同点为Scala中的Array可以作为序列使用,通过隐式转换的方式把Scala中的数组转换成序列。
Scala中定义数组的四种方式如下:
第一种方式:new Array[T](n)。T表示定义数组的类型,n表示指定数组的长度。 第二种方式:Array。例如定义Array(1,2,3)数组。
第三种方式:利用数组中的方法。例如可以使用Rang填充数组。
第四种方式:其他集合转换。例如List.toArray表示把List集合转换成数组。

object Test1 {
// 不可变数组(默认就是)
def main(args: Array[String]): Unit = {
// 1.创建数组
val arr1 = Array(1,2,3)
// 2.查看数组的元素。根据下标:格式 数组名(下标)
// 下标从0开始
// 最大的下标值是 2?
// 如果超过了最大的下标,会报错:ArrayIndexOutOfBoundsException
println(s"arr1的第2个元素是:${arr1{1}}")
// println(arr1(20))
//3. 遍历
// for, foreach, iterator
// for(i <- arr1)println(i)
// arr1.foreach(println)
val it1 = arr1.iterator
while(it1.hasNext){
println(it1.next())
}
}
}
2.Scala的ArrayBuffer
Scala中的ArrayBuffer定义方式同样有多种,这里主要介绍两种。
第一种方式:ArrayBuffer
第一种方式:new ArrayBuffer。
当定义一个不可变数组时会传递一个数组的长度,表示数组长度不可变。当定义可变数组是,可以不传递数组的长度,Scala会分配一个默认的长度。当长度不够时,ArrayBuffer还会自动扩展。一般情况下会指定一个初始长度,对数组进行预判。
import scala.collection.mutable.ArrayBuffer
object Test1 {
def main(args: Array[String]): Unit = {
val arr1 = ArrayBuffer(1,2,3,4)
// 1.删除一个元素
arr1 -= 4
// 2.添加一个元素
arr1 += 5
// 3.修改元素。 数组名(下标) = 新值
//3 --> 100
arr1(2) = 100
// 4.检查某个元素是否在数组中存在
// println(s"数组中是否包含5:${arr1.contains(5)}")
// 4.1找指定元素的下标:找元素2在数组中的下标是多少?
// 如果找不到,返回-1
//如果有多个相同的元素,返回第一个的下标
// println(arr1.index0f(2))
// arr1.foreach(println)
// 5 从一个数组中 ,截取连续的一段来组成一个新的数组
// ArrayBuffer(-1,-2,1,2,3,4,5)--> (1,2,3)
// ArrayBuffer(-1,-2,1,2,3,4,5).slice(截取这段的起点下 ·截取这段的终点下标-不包括)
// val arr2= ArrayBuffer(-1,-2,1,2,3,4, 5).slice(2,5)
// ArrayBuffer(-1, -2, 1, 2, 3, 4, 5) ---> (1, 2, 3, 4, 5)
val arr2 = ArrayBuffer(-1, -2, 1, 2, 3, 4, 5).slice(2, 7)
arr2.foreach(println)
}
}
更多推荐



所有评论(0)