Scala中的列表分为不可变List和可变ListBuffer两种。默认使用的是不可变的List,要使用可变的ListBuffer,必须先导入才能使用。
1、 不可变的List
List的创建:
scala> val list=List[Int](1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> val ll=List(1,1,1)
ll: List[Int] = List(1, 1, 1)
scala> val list2=6::5::4::3::8::9::Nil
list2: List[Int] = List(6, 5, 4, 3, 8, 9)
说明:
(1) 从上面示例中可以看到,创建List可以指明数据类型,也可以不指明,Scala会自动推断。
(2) Nil表示空列表,::是方法,表示在列表的头部添加数据,生成一个新的列表。
2、 可变列表ListBuffer
使用ListBuffer之前,必须先导入,否则会报错:
scala> val lst1=ListBuffer(1,2,3,4,5,6)
val lst1=ListBuffer(1,2,3,4,5,6)
创建可变列表:
scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer
scala> val lst1=ListBuffer(1,2,3,4,5,6)
lst1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 5, 6)
scala> val lst2=new ListBuffer[Int]
lst2: scala.collection.mutable.ListBuffer[Int] = ListBuffer()
说明:上例中的lst2创建的是一个空的可变列表
可变列表ListBuffer上的常用操作:
+= :添加一个或多个元素
++= :添加集合元素
-= :删除一个或多个元素
--=:删除集合元素
(index,val*) :插入元素,第一个参数为索引号,第二个参数为要插入的一个或多个值。
remove(index,count):删除元素,第一个参数为索引号,第二个参数为要删除的元素个数。
isEmpty:判断列表是否为空
clear:清空列表
scala> import scala.collection.mutable.ListBuffer
import scala.collection.mutable.ListBuffer
scala> val lst1=ListBuffer(1,2,3)
lst1: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3)
scala> lst1+=5
res0: lst1.type = ListBuffer(1, 2, 3, 5)
scala> lst1+=(10,100)
res1: lst1.type = ListBuffer(1, 2, 3, 5, 10, 100)
scala> lst1++=List(6,60,600)
res2: lst1.type = ListBuffer(1, 2, 3, 5, 10, 100, 6, 60, 600)
scala> lst1-=5
res4: lst1.type = ListBuffer(1, 2, 3, 10, 100, 6, 60, 600)
scala> lst1-=(10,600)
res6: lst1.type = ListBuffer(1, 2, 3, 100, 6, 60)
scala> lst1--=List(1,3)
res7: lst1.type = ListBuffer(2, 100, 6, 60)
scala> lst1.(1,5,5)
scala> lst1
res9: scala.collection.mutable.ListBuffer[Int] = ListBuffer(2, 5, 5, 100, 6, 60)
scala> lst1.(1,5,5)
scala> lst1
res9: scala.collection.mutable.ListBuffer[Int] = ListBuffer(2, 5, 5, 100, 6, 60)
scala> lst1
res12: scala.collection.mutable.ListBuffer[Int] = ListBuffer(2, 5, 100, 6, 60)
scala> lst1.isEmpty
res13: Boolean = false
scala> lst1.clear
scala> lst1
res15: scala.collection.mutable.ListBuffer[Int] = ListBuffer()