Scala 图书馆管理系统1.2

6 阅读1分钟

实训二:可变 Set 实现图书馆管理系统

1. 创建可变 Set

val library1 = mutable.Set[String](
  "Scala 程序设计",
  "Java 编程思想", 
  "Scala 实战"
)

解析:

  • mutable.Set[String] - 创建字符串类型的可变Set
  • Set特性:元素唯一,无序
  • 初始化时传入初始元素

2. 添加和删除元素

library1 += "Python 从入门到实践"
library1 += "数据结构与算法分析"
library1 -= "Scala 实战"

解析:

  • += - 向Set添加元素,如果元素已存在则无变化
  • -= - 从Set移除元素,如果元素不存在则无变化
  • 这些操作都会修改原Set

3. 检查元素存在性

val searchBook = "Python 从入门到实践"
if (library1.contains(searchBook)) {
  println(s"《$searchBook》在图书馆中")
} else {
  println(s"《$searchBook》不在图书馆中")
}

解析:

  • contains 方法 - 检查Set是否包含指定元素
  • 返回布尔值:true 或 false
  • 时间复杂度接近 O(1),查找效率高

4. 集合运算

// 创建第二个Set
val library2 = mutable.Set[String](
  "Java 编程思想",
  "Python 从入门到实践", 
  "C++ Primer",
  "算法导论"
)

// 并集
val unionSet = library1.union(library2)

// 交集  
val intersectSet = library1.intersect(library2)

// 差集
val diffSet = library1.diff(library2)

解析:

并集 (union):

  • 包含两个集合中的所有元素
  • 重复元素只出现一次
  • 数学表示:A ∪ B

交集 (intersect):

  • 只包含两个集合中都存在的元素
  • 数学表示:A ∩ B

差集 (diff):

  • 包含在第一个集合但不在第二个集合中的元素
  • library1.diff(library2) = 在library1中但不在library2中的书籍
  • 数学表示:A - B