###结构关系###
- Seq是个有先后次序的值的序列,比如数组和链表。
不可变=> List、Array、Stream、Stack、Queue、Vector、Range
可变=>ListBuffer、ArrayBuffer、Stack、Queue、LinkedList、Double LinkedList - Set没有先后次序的值。
不可变=>Set
可变=>Set
SortedSet可以被顺序访问
不可变=>SortedSet
可变=>SortedSet - Map
不可变=>Map
可变=>Map
SortedMap按照键排序访问
不可变=>SortedMap
可变=>SortedMap
默认都是不可变的(import scala.collection.mutable._),如果需要使用可变的集合,需要导入import scala.collection.mutable._
###一些比较###
#####Array、List、Tuple的区别####
- 在Scala 2.7中,Array、List都不能混合类型,只有Tuple可以;而在Scala以上版本中,3者的元素都可以混合不同的类型(转化为Any类型),只不过是当使用混合类型时,Array和List会将元素类型转化为Any类型,而Tuple则保留每一个元素的初始类型;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UR4m1cYR-1588843929780)(https://img-blog.csdn.net/20160825221652499)]
3. List有很多特殊的方法和属性,如方法tail 、head、::,Nil属性等。
#####Array、ArrayBuff的比较####
- Array只能可以修改里面的值,但是不能改变长度
ArrayBuff可以修改值,也可以改变长度
###使用举例###
####不可变List####
构建
1、val lst = List(1,2,3)
//Nil是一个空的List,定义为List[Nothing],根据List的定义List[+A],所有Nil是所有List[T]的子类
//:: 操作符是右结合的,列表从末端开始构建,如9 :: 5 :: 2 :: Nil相当于 9 :: (5 :: (2 :: Nil))
2、var nil = 1::2::Nil => List(1, 2)
取值、遍历
lst(0) => 1
//head第一个元素
lst.head => 1
//tail除第一个元素外的所有元素
lst.tail =>List(2,3)
//遍历
def sum1(lst: