list1

44 阅读2分钟

一、List 的基本特性

1. 不可变性 (Immutable)

 
val list1 = List(1, 2, 3)
val list2 = list1 :+ 4  // 创建新列表,list1 不变
// list1 仍然是 List(1, 2, 3)

2. 链表结构

  • 头部(head):第一个元素
  • 尾部(tail):剩余元素组成的列表
  • 空列表:Nil
 
val list = List(1, 2, 3)
val head = list.head    // 1
val tail = list.tail    // List(2, 3)

二、创建 List

1. 基本创建方式

 
// 使用伴生对象的 apply 方法
val list1 = List(1, 2, 3)

// 使用 Nil 和 ::(cons 操作符)
val list2 = 1 :: 2 :: 3 :: Nil

// 空列表
val empty1 = List()
val empty2 = Nil

// 范围创建
val rangeList = List.range(1, 5)  // List(1, 2, 3, 4)

2. 其他创建方法


// 填充相同元素
val sameElements = List.fill(3)("hello")  // List("hello", "hello", "hello")

// 生成序列
val tabulated = List.tabulate(5)(n => n * n)  // List(0, 1, 4, 9, 16)

// 连接多个列表
val concat = List.concat(List(1,2), List(3,4))  // List(1, 2, 3, 4)

三、基本操作

1. 访问元素

 
val list = List("a", "b", "c", "d")

list(0)      // "a" - 通过索引访问
list.head    // "a" - 第一个元素
list.tail    // List("b", "c", "d") - 除第一个外的所有元素
list.last    // "d" - 最后一个元素
list.init    // List("a", "b", "c") - 除最后一个外的所有元素

2. 添加元素(创建新列表)

 
val list = List(1, 2, 3)

// 在开头添加(高效)
val newList1 = 0 :: list      // List(0, 1, 2, 3)
val newList2 = 0 +: list      // 同上

// 在末尾添加(低效 - 需要遍历整个列表)
val newList3 = list :+ 4      // List(1, 2, 3, 4)

3. 连接列表

 
val list1 = List(1, 2)
val list2 = List(3, 4)

val combined1 = list1 ::: list2    // List(1, 2, 3, 4)
val combined2 = list1 ++ list2     // 同上

四、常用方法

1. 长度和检查

 
val list = List(1, 2, 3)

list.length     // 3
list.isEmpty    // false
list.nonEmpty   // true
list.size       // 3(同 length)

2. 反转和排序

 
val list = List(3, 1, 4, 2)

list.reverse          // List(2, 4, 1, 3)
list.sorted           // List(1, 2, 3, 4)
list.sortWith(_ > _)  // List(4, 3, 2, 1)

3. 查找元素

 
val list = List(1, 2, 3, 4, 5)

list.contains(3)      // true
list.indexOf(3)       // 2
list.find(_ > 3)      // Some(4)
list.exists(_ % 2 == 0)  // true(存在偶数)
list.forall(_ > 0)    // true(所有元素都大于0)