【大数据基础知识】Scala中的列表

中公优就业 2023年08月17日 15:38:00

      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)

      :11: error: not found: value ListBuffer

      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()