实训二:可变 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