shenwenjie 2020-07-07
基本介绍
Scala中的List 和Java List 不一样,在Java中List是一个接口,真正存放数据是ArrayList,而Scala的List可以直接存放数据,就是一个object,默认情况下Scala的List是不可变的,List属于序列Seq。
val List = scala.collection.immutable.List object List extends SeqFactory[List]
创建List的应用案例
val list01 = List(1, 2, 3) //创建时,直接分配元素 println(list01) val list02 = Nil //空集合 println(list02)
创建List的应用案例小结
1)List默认为不可变的集合 List
2) 在 scala包对象声明的,因此不需要引入其它包也可以使用
3) val List = scala.collection.immutable.List
4) List 中可以放任何数据类型,比如 arr1的类型为 List[Any]
5) 如果希望得到一个空列表,可以使用Nil对象, 在 scala包对象声明的,因此不需要引入其它包也可以使用
val Nil = scala.collection.immutable.Nil
应用实例
基本介绍
向列表中增加元素, 会返回新的列表/集合对象。注意:Scala中List元素的追加形式非常独特,和Java不一样。
方式1-在列表的最后增加数据
var list1 = List(1, 2, 3, "abc") // :+运算符表示在列表的最后增加数据 val list2 = list1 :+ 4 println(list1) //list1没有变化 println(list2) //新的列表结果是 [1, 2, 3, "abc", 4]
方式2-在列表的最前面增加数据
var list1 = List(1, 2, 3, "abc") // :+运算符表示在列表的最后增加数据 val list2 = 4 +: list1 println(list1) //list1没有变化 println(list2) //新的列表结果是?
方式3-在列表的最后增加数据
1) 符号::表示向集合中 新建集合添加元素。
2) 运算时,集合对象一定要放置在最右边,
3) 运算规则,从右向左。
4) ::: 运算符是将集合中的每一个元素加入到空集合中去
val list1 = List(1, 2, 3, "abc")val list5 = 4 :: 5 :: 6 :: list1 :: Nilprintln(list5) //下面等价 4 :: 5 :: 6 :: list1val list7 = 4 :: 5 :: 6 :: list1 ::: Nilprintln(list7)
ListBuffer
ListBuffer是可变的list集合,可以添加,删除元素,ListBuffer属于序列
//追一下继承关系即可
Seq var listBuffer = ListBuffer(1,2)
val lst0 = ListBuffer[Int](1, 2, 3) println("lst0(2)=" + lst0(2)) for (item <- lst0) { println("item=" + item) } val lst1 = new ListBuffer[Int] lst1 += 4 lst1.append(5) lst0 ++= lst1 val lst2 = lst0 ++ lst1 val lst3 = lst0 :+ 5 println("=====删除=======") println("lst1=" + lst1) lst1.remove(1) for (item <- lst1) { println("item=" + item) }