文章目录
一、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
就是一个包含其他 List
的 List
,这样可以形成多维数组或类似矩阵的数据结构。
以下是创建和访问多维 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 的可变集合类型,如 ArrayBuffer
或 ListBuffer
。
下面是使用可变 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
类还有更多的方法可供使用。