(二十七)scala中的List

34 阅读2分钟

(一)List的定义和介绍

List 是一种有序的数据结构,它是一种链表结构。

List 创建格式

不可变 List:

val 列表名称 = List(element1, element2,...)

可变 List : ListBuffer

import scala.collection.mutable.ListBuffer

val 列表名称 = ListBuffer[元素类型](element1, element2,...)

注意:不可变 List 创建后元素不能修改,而可变 List 可以修改。

代码展示:

package list
/*
List: 有序, 链表
* 可变与不可变
*/

  object list01 {
    def main(args: Array[String]): Unit = {
      // 可变
      val list1 = scala.collection.mutable.ListBuffer(1, 2, 3)
      list1 += 4
      println(list1)

      // 不可变 不能直接修改原来的数值
      val list2 = scala.collection.immutable.List(1, 2, 3)
      // list2 += 4 => 会报错
    }
  }

(二)可变List的常用方法

1. 添加元素

对于可变 List,我们可以使用+=操作符或者append方法来添加元素。

添加元素到可变 List 的格式 (+= 操作符): listBuffer += element
添加元素到可变 List 的格式 (append 方法): listBuffer.append(element)

package list
/*
可变与不可变
* 常用方法
* 1. 添加
* 1.1 在尾部添加  +=
* 1.2 在头部添加  prepend
* 1.3 在指定位置添加 insert
*/
object list02 {
  def main(args: Array[String]): Unit = {
    // 可变的
    val list1 = scala.collection.mutable.ListBuffer(1,2,3)
    // 1.1 在尾部添加
    list1 += 4
    // 1.2 在头部添加
    list1.prepend(-1)
    // 1.3.在指定位置添加 (-1,1,2,5,3,4)
    list1.insert(3, 5)
    // 3: 是下标,从0开始的。
    // 5: 就是要插入的元素。

    println(list1)
  }
}

2. 删除元素

删除的方法有两种:删除元素,删除某个位置上的元素。

3. 元素是否存在

我们可以使用contains方法来查询 List 中是否包含某个元素

4. 合并列表

我们可以使用 ++ 方法来合并。

5. List的遍历

我们可以使用for循环或者foreach方法来遍历 List

代码展示:

package list
/*
可变与不可变
* 常用方法
* 1. 添加
* 1.1 在尾部添加  +=
* 1.2 在头部添加  prepend
* 1.3 在指定位置添加 insert
*/
object list02 {
  def main(args: Array[String]): Unit = {
    // 可变的
    val list1 = scala.collection.mutable.ListBuffer(1,2,3)
    // 1.1 在尾部添加
    list1 += 4
    // 1.2 在头部添加
    list1.prepend(-1)
    // 1.3.在指定位置添加 (-1,1,2,5,3,4)
    list1.insert(3, 5)
    // 3: 是下标,从0开始的。
    // 5: 就是要插入的元素。
    
    // 3. 检查元素是否存在
    val ele = 50
    if(list1.contains(ele)){
      println(s"${ele}: 存在")
    } else {
      println(s"${ele}: 不存在")
    }

    // 4. 合并 ++
    val list2 = scala.collection.mutable.ListBuffer("潜江", "仙桃")
    val list3 = scala.collection.mutable.ListBuffer("天门")
    val list4 = list2 ++ list3
    println(list4)

    // 5. 遍历
    for(ele <- list4){
      println(s"${ele}")
    }

    list4.foreach(ele => {
      println(s"${ele}")
    }) // foreach 高阶函数

    println(list1)
  }
}