scala中的List

23 阅读2分钟

一.List的定义和介绍

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

[展示]List 创建格式

不可变List:

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

可变 List : ListBuffer

import scala.collection.mutable.ListBuffer

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

教师写代码演示两种List

// 创建一个不可变 List,包含中国部分名山
val famousMountains: List[String] = List("泰山", "衡山", "华山", "恒山", "嵩山")
// 创建一个可变 List
import scala.collection.mutable.ListBuffer
val mutableFamousMountainsBuffer = ListBuffer[String]("黄山")

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

二.可变List的常用方法

1. 添加元素

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

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

l1 += 4          // 在尾部添加, 或者append  
l1.prepend(-1)   // 在头部添加  
l1.insert(2,150) // 在指定位置添加。 把2这个位置上的元素改成150,其他向后边移动

2. 删除元素

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

l1 -= 150 // 删除指定的元素  
l1.remove(0) // 删除指定位置上的元素

3. 元素是否存在

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

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

val isContained: Boolean = listName.contains(element)

val containsTaiShan: Boolean = famousMountains.contains("泰山")
println(containsTaiShan)

这里使用contains方法查询“泰山”是否在名山列表中,返回值是一个布尔 类型,表示是否存在该元素

4. 合并列表

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

val l2 = ListBuffer(10,20)  
val l3 = l1 ++ l2 // 把l1 和 l2 中的内容合并到l3中

5. List的遍历

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

使用 for 循环遍历 List 的格式:

for (element <- listName) {
  // 操作,如打印 element
}

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

listName.foreach { element =>
  // 操作,如打印 element
}
// 使用 for 循环遍历
for (mountain <- famousMountains) {
  println(mountain)
}
// 使用 foreach 方法遍历
famousMountains.foreach { mountain => println(mountain) }

这里展示了两种遍历 List 的方式,打印出每个名山的名称。

三.不可变List的常用方法

1. 添加元素

对于不可变 List,我们可以使用appended,或者prepended方法来添加元素。要注意的是:需要使用新的List来保存结果。

val l2 = l1.appended(4)     // 在尾部添加  
val l2 = l1.prepended(-1)   // 在头部添加

2. 合并列表

我们可以使用:::方法 或者是 ++ 来合并。

val l2 = List(10,20)  
val l3 = l1 ++ l2 // 把l1 和 l2 中的内容合并到l3中  
val l4 = l1 ::: l2 // 把l1 和 l2 中的内容合并到l4中