Scala中的数据结构
数组(Array)
数组是一个可变的数据结构,长度固定,元素的类型必须一致。
Array是一个长度固定的数组,ArrayBuffer为一个长度可变的数组,可以动态添加和删除元素
var arr:Array[Int] = Array(1,2,3,4,5) // 一维数组
var arrM:Array[Array[Int]] =Array(Array(1,2,3,4),Array(5,6,7)) // 多维数组
arrM=Array.ofDim(4,4) //用方法声明多维数组
for(i <- arrM){ // 遍历
for(j <- i){
println(j)
}
}
println(arr(0)) // 取值
println(arrM(1)(2)) //多维取值
val anyArr:Array[AnyVal] =Array(1,2.0,true) // AnyVal为这些类型公有的父类型,因此为同类型
该数据结构还有很多的方法例如max,min等,可以通过查询文档调用
元组(Tuple)
元组(Tuple)是一种不可变的、有序的集合,允许不同类型的元素存储在其中。元组的大小是固定的,一旦创建,其元素个数不能改变。scala中为Tuple1到Tuple22,分被为1到22长度的元组
val t1:Tuple2[Int,String]=(0,"add") // 显示写法
val t2:(Int, String)=(1,"add") // 隐式写法
val t3=(1,true,"add") // 直接赋值
t3._3 //元组取值
列表(List)
List 是一种不可变的、有序的集合,用于存储相同类型的元素。它是基于链表实现的,每个元素都包含一个值和指向下一个元素的引用。由于是不可变的,对 List 进行操作会产生新的 List,而原始 List 不会受到影响。
ListBuffer 为动态可变列表
var l=List[Int](1,2,3,4,5,6)
l=1::2::3::4::Nil // 相当于用一个空列表加上前面的元素构成新列表
集合(Set)
Set 是一种集合类型,用于存储独特(不重复)元素。Set 提供了高效的成员检查操作,并且是不可变的,即一旦创建,其内容无法更改。
HashSet 为动态可变集合
映射(Map)
Map 是一种集合类型,用于存储键值对。每个键对应一个值,键是唯一的,且与值之间存在映射关系。Map 是不可变的,一旦创建,其内容不能被修改。
val map1=Map[String,Int]("scala"->20,("java",60)) // 可以使用k->v,也可以用元组(k,v)
println(map1("scala")) // 取值
println(map1.get("scala")) // 取值
println(map1.getOrElse("python",0)) // 防止k不存在,如果不存在默认返回0
map1.keySet // 获取所有的key
map1.values // 获取所有的value
for(kv <- map1){ // 遍历map
println(kv._1) // key
println(kv._2) // value
}