【Scala集合】13、列表List

在这里插入图片描述

一、List

在 Scala 中,List 是一种不可变的、线性的集合类型。它是一种有序的集合,每个元素都有一个唯一的索引,可以通过索引访问元素。List 的元素类型可以是任意类型,并且在创建后不可更改。

List 是 Scala 标准库中最常用的集合类型之一。要使用 List,首先需要导入 scala.collection.immutable.List

创建 List 的方法有多种,以下是一些常见的创建 List 的方式:

1、使用 List 伴生对象的 apply 方法

scalaCopy code
val myList: List[Int] = List(1, 2, 3, 4, 5)

2、使用 :: 操作符和 Nil 空列表创建

scalaCopy code
val myList: List[Int] = 1 :: 2 :: 3 :: 4 :: 5 :: Nil

3、使用 List 伴生对象的 empty 方法创建空列表

scalaCopy code
val emptyList: List[Int] = List.empty[Int]

二、多维List

在 Scala 中,多维 List 可以通过嵌套 List 来实现。实际上,多维 List 就是一个包含其他 ListList,这样可以形成多维数组或类似矩阵的数据结构。

以下是创建和访问多维 List 的示例:

// 创建一个二维 List,表示一个3行4列的矩阵
val matrix: List[List[Int]] = List(
  List(1, 2, 3, 4),
  List(5, 6, 7, 8),
  List(9, 10, 11, 12)
)

// 访问二维 List 的元素
println(matrix(1)(2)) // 输出:7

在上述示例中,我们创建了一个二维 List,表示一个3行4列的矩阵。然后,我们通过索引来访问二维 List 的元素。注意,索引从0开始,matrix(1)(2) 表示第二行第三列的元素,即7。

您可以根据需要创建更高维度的多维 List,只需要在嵌套 List 的基础上继续添加更多层级的 List

需要注意的是,Scala 的 List 是不可变的,所以多维 List 也是不可变的。如果需要可变的多维数组,可以使用 Scala 的可变集合类型,如 ArrayBufferListBuffer

下面是使用可变 ListBuffer 创建和操作多维 List 的示例:

import scala.collection.mutable.ListBuffer

// 创建一个二维 ListBuffer,表示一个2行3列的矩阵
val matrix: ListBuffer[ListBuffer[Int]] = ListBuffer(
  ListBuffer(1, 2, 3),
  ListBuffer(4, 5, 6)
)

// 添加新行
matrix += ListBuffer(7, 8, 9)

// 修改元素
matrix(1)(2) = 10

// 输出整个二维 ListBuffer
println(matrix) // 输出:ListBuffer(ListBuffer(1, 2, 3), ListBuffer(4, 5, 10), ListBuffer(7, 8, 9))

在上述示例中,我们使用 ListBuffer 来创建一个可变的二维 List,然后添加新行、修改元素等操作。

三、遍历List

对于遍历List,和遍历数组Array一样,都可以通过索引、迭代器、foreach进行实现,这里不再赘述

四、List常用方法

在 Scala 的 List 类中,有许多常用的方法可以用于对列表进行操作。这些方法大多数都是不可变的,即它们会返回一个新的列表,而不会修改原始的列表。以下是 List 常用方法的一些示例:

1、head

返回列表的第一个元素

val myList = List(1, 2, 3, 4, 5)
val firstElement = myList.head // 返回 1

2、tail

返回除第一个元素之外的所有元素组成的列表

val myList = List(1, 2, 3, 4, 5)
val restElements = myList.tail // 返回 List(2, 3, 4, 5)

3、isEmpty

检查列表是否为空

val myList = List(1, 2, 3, 4, 5)
val emptyCheck = myList.isEmpty // 返回 false

val emptyList = List.empty[Int]
val emptyCheck2 = emptyList.isEmpty // 返回 true

4、length

返回列表的长度(元素个数)

val myList = List(1, 2, 3, 4, 5)
val length = myList.length // 返回 5

5、map

对列表的每个元素应用给定的函数,并返回结果列表

val myList = List(1, 2, 3, 4, 5)
val mappedList = myList.map(_ * 2) // 返回 List(2, 4, 6, 8, 10)

6、filter

根据给定的条件筛选列表中的元素,并返回符合条件的元素列表

val myList = List(1, 2, 3, 4, 5)
val filteredList = myList.filter(_ % 2 == 0) // 返回 List(2, 4)

7、foldLeft

从左到右将二元操作符应用于列表中的元素,返回最终结果

val myList = List(1, 2, 3, 4, 5)
val sum = myList.foldLeft(0)(_ + _) // 返回 15,计算列表元素的和

8、exists

检查列表中是否存在满足给定条件的元素

val myList = List(1, 2, 3, 4, 5)
val exists = myList.exists(_ > 3) // 返回 true,存在元素大于 3

以上只是 List 类的一些常用方法示例,实际上 List 类还有更多的方法可供使用。

猜你喜欢

转载自blog.csdn.net/m0_47256162/article/details/132159656