scala数据结构与可变不可变

数组:
可变与不可变
不可变数组是指数组的长度是不可变的,但是数组对应的元素是可变的
可变数组的长度和元素都可以改变

不可变数组
val arr=Array(1,2) 完成初始化,且限定长度为2
val arr=ArrayInt 长度为5的Int类型数组
val arr=arr ++ arr1 只是通过显示申明过类型的数组才可以进行该操作,不然报类型不匹配错误

可变数组
val c = scala.collection.mutable.ArrayBufferInt
c可以任意的插值和更新值

List:
List是不可变的。长度无法再改变,但是对象可变。
val oneTwoThreeFour = oneTwo ::: threeFour list合并,与java.lang.String一样,返回的是一个新对象
1 :: twoThree 可以添加值,但只能向前添加

Tuple:
不可变多值对象,其特点是可以放入任意类型的数据
val pair = (99, "Luftballons") 内部生成一个Tuple2对象
println(pair._1) 访问是通过_N访问,N从1开始
println(pair._2)

Set:
对可变set和不可变set的分析
对于可变set和不可变set都可以通过 set+="str" 来添加一个元素,但是机制不同
对于不可变set来说,想添加元素变量必须是var修饰,因为不可变set的机制和List相同
返回的是一个新的Set,如果元素是val不可变,就不能接受新的Set。相反,如果是一个
可变集合,即使变量是val修饰的,还是可以添加元素,因为集合本身没有改变

Map:
对象映射关系集合,也分可变不可变,但是原理一样
var myMap=Map(1->"s",2->2) 可以初始化,也可以不
myMap+=(3->"q") 添加或者修改元素

对于所有集合,在初始化时进行赋值操作,编译器会识别并给这个集合表明类型,如果全部是Int
那么这个集合就是Int类型,不可更改。如果插入时又有Int又有String,那么类型是any,可以
对任意类型操作。

你可能感兴趣的:(scala数据结构与可变不可变)