1 列表 List-创建List

基本介绍

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

2 列表 List-访问List元素

应用实例

scala 数据结构(四):列表 List_基本介绍

 

 3 列表 List-元素的追加

基本介绍

向列表中增加元素, 会返回新的列表/集合对象。注意: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 :: Nil
println(list5)
//下面等价 4 :: 5 :: 6 :: list1
val list7 = 4 :: 5 :: 6 :: list1 ::: Nil
println(list7)

4 列表 ListBuffer

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

实例一:

package com.atguigu.scala.chapter07

object Scala04_TestList {
  def main(args: Array[String]): Unit = {
    //创建List集合,因为List是抽象的,只能通过apply方式创建
    val list = List(1,2,3,4)

    //向集合中添加元素
    //val newlist = list. +: (10) //在列表前面添加元素
    //val newlist = list. :+ (10) //在列表后面添加元素
    //print(newlist)




    //在Scala语言中个,List()===>Nil 表示空集合
    //val newlist = list.::(50)
    //val newlist = Nil.::(40)
    //val newlist = 40::30::80::90::Nil
    //print(newlist)


    //扁平化   将整体拆分为个体的过程
    val list2 = List(1,2,3)
    val list3 = List(5,6)


    //向集合中添加元素  ::
    //val newlist = list2::list3
    val newlist = list2:::list3
    print(newlist)


    //获取集合中的某一个元素
    print(newlist(1))
    
    newlist.foreach(print(_))


  }

}

实例二:

package com.atguigu.scala.chapter07

import scala.collection.mutable.ListBuffer

/**
  * Author: Felix
  * Date: 2020/5/4
  * Desc:  可变Seq
  */
object Scala05_TestListBuffer {
  def main(args: Array[String]): Unit = {
    //创建可变集合对象
    //val list: ListBuffer[Int] = new ListBuffer[Int]()
    val list: ListBuffer[Int] = ListBuffer(1,2,3)

    //向集合中添加元素  建议:可变用方法,不可变用符号
    list.append(10)
    list.insert(1,20)

    //修改元素
    list(0) = 30
    list.update(0,30)

    //删除
    list.remove(1,2)
    println(list)
  }
}