scala中的List

33 阅读2分钟

(一)List的定义和介绍

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

List 创建格式:

不可变List:

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

可变 List:ListBuffer

import scala.collection.mutable.ListBuffer

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

def main(args: Array[String]): Unit = {
    // 不可变列表
     val list1 = List("湖北","湖南","广东")
    // list1 += "北京" 错误,不可变列表,不能直接+=
    println(list1)

    // 可变的列表
    val list2 = scala.collection.mutable.ListBuffer("湖北","湖南","广东")
    // 可变列表,可以 +=
    list2 += "北京"
    println(list2)
  }
}

(二)可变List的常用方法

1. 添加元素

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

添加元素到可变 List 的格式 (+= 操作符):

listBuffer += element

添加元素到可变 List 的格式 (append 方法):

listBuffer.append(element)

val list1 = scala.collection.mutable.ListBuffer("湖北")

// 1.添加,在尾部添加
list1 += "南京"

println(list1) // ListBuffer(湖北,南京)

// 2.添加,在头部添加
list1.prepend("青岛") // 青岛,湖北,南京

// 3.添加,在指定位置插入
list1.insert(2,"湖南") //青岛,湖北,湖南,南京

println(list1)

2. 删除元素

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

// 4. 删除,删除指定元素,只删除找到的这一个
list1 -= "青岛"
// 5.删除某个下标上的元素
println(list1)
list1.remove(0) // 删除列表中的第一个元素。下标为0的元素
println(list1)

3. 元素是否存在

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

查询 List 元素的格式(contains 方法):

val isContained: Boolean = listName.contains(element)

if(list1.contains("潜江")){
  println("青岛在列表中")
}else{
  println("青岛不在列表中")
}

4.合并列表

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

val list2 = scala.collection.mutable.ListBuffer(1,2,3)
val list3 = scala.collection.mutable.ListBuffer(4,5,6)
val list4 = list2 ++ list3
val list5 = list2.concat(list3)
println(list4)
println(list5)

5. List的遍历

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

使用 for 循环遍历 List 的格式

for (element <- listName) {

  // 操作,如打印 element

}

使用 foreach 方法遍历 List 的格式:

listName.foreach { element =>

  // 操作,如打印 element

}

list1.foreach(ele => {
  println(ele)
})

for(ele <- list1){
  println(ele)
}

结果如下

ListBuffer(湖北, 南京)
ListBuffer(青岛, 湖北, 湖南, 南京)
ListBuffer(湖北, 湖南, 南京)
ListBuffer(湖南, 南京)
青岛不在列表中
ListBuffer(1, 2, 3, 4, 5, 6)
ListBuffer(1, 2, 3, 4, 5, 6)
湖南
南京
湖南
南京