一、List集合
1、分类
-
mutable 可变——元素个数和值等可以改变(ListBuffer)
-
immutable不可变——长度和元素的值都不可变(List)
在scala.collection.mutable/immutable包中,常用的List就是immutable下面的集合。
2、List集合是一个抽象类不能被实例化,也就是不能使用 new的方式进行创建
二、不可变List
1、声明
(1)val list=List[Int](1,2,3)
(2)val list=11::22::33::Nil [生成新的List集合]
:: 是List集合中的拼接方法。证明list集合是全部拼接出来的,所以List集合分为两个部分,头元素+尾列表 Nil代表空列表。
(3)声明一个空的集合,然后使用::方法往集合中添加值
1 def main(args: Array[String]): Unit = { 2 val list=Nil 3 var a=1::list 4 var b=2::a 5 var c=3::b 6 c.foreach(println) 7 }
注意:必须从后往前拼接,拼接完毕生成新的list集合
2、头元素尾列表
Scala中List集合有三个基本操作:
-
head 返回列表第一个元素
-
tail 返回一个列表,包含除了第一元素之外的其他元素
-
isEmpty 在列表为空时返回true
3、连接两个或多个列表
::: 运算符
List.:::() 方法
List.concat() 方法
val a=11::22::33::Nil val b=11::22::33::Nil val c=11::22::33::Nil val r=List.concat(a,b,c) for (elem <- r) { println(elem) }
4、取值
通过下标取值
5、常用方法
List.fill()——创建一个指定重复数量的元素列表
LIst.reverse——将集合中的元素反转
排序方法:sorted、sortBy、sortwith
三、可变ListBuffer
1、需要导入import scala.collection.mutable.ListBuffer包
2、声明
(1)val list=new ListBuffer[Int]( ) 括号中不能给值
(2)val list=ListBuffer(1,2,3) 直接赋值的方式声明
注意:
-
List不可以使用new创建, ListBuffer可以使用new创建
-
List可以使用::方法创建 , ListBuffer不可以使用 :: 方法创建
3、常用方法
+=: 往ListBuffer中添加单个元素
++=:将数组或者单个元素进行拼接
-=: 删除ListBuffer中单个元素
--=:删除List一个集合或者多个元素
insert、remove、isEmpty、reverse、max、min、sum、sorted、sortWith、sortBy等方法的使用与数组类似