Scala 集合实战:用可变 Set 管理图书馆书籍

41 阅读3分钟

1. 创建并初始化可变 Set

首先,我们需要导入 Scala 的可变集合库,并创建一个可变的 Set 来存储图书馆的书籍。

// 导入可变集合
import scala.collection.mutable

object LibrarySetDemo {
  def main(args: Array[String]): Unit = {
    // 1. 创建可变 Set 并初始化
    val libraryBooks: mutable.Set[String] = mutable.Set(
      "Java 编程思想",
      "Scala 实战",
      "Effective Java",
      "设计模式:可复用面向对象软件的基础"
    )
    println("初始图书馆书籍: " + libraryBooks)
  }
}

2. 向集合中添加新书籍

使用 += 操作符可以方便地向可变 Set 中添加元素:

// 2. 添加两本新的书籍
libraryBooks += "Python 从入门到实践"
libraryBooks += "算法导论"
println("\n添加新书后的图书馆: " + libraryBooks)

3. 从集合中删除书籍

使用 -= 操作符可以从 Set 中删除指定元素:

// 3. 删除一本书
libraryBooks -= "Effective Java"
println("\n删除一本书后的图书馆: " + libraryBooks)

4. 检查书籍是否存在

使用 contains 方法可以检查某个元素是否存在于 Set 中:

// 4. 检查特定书籍是否存在
val bookToCheck = "Python 从入门到实践"
val exists = libraryBooks.contains(bookToCheck)
println(s"\n'$bookToCheck' 是否在图书馆中: $exists")

val anotherBook = "JavaScript 高级程序设计"
println(s"'$anotherBook' 是否在图书馆中: ${libraryBooks.contains(anotherBook)}")

5. 创建第二个图书馆集合

让我们再创建一个可变 Set 来表示另一个图书馆:

// 5. 创建另一个图书馆的书籍集合
val anotherLibrary: mutable.Set[String] = mutable.Set(
  "Python 从入门到实践",
  "深入理解计算机系统",
  "Scala 实战",
  "数据结构与算法分析"
)
println("\n另一个图书馆的书籍: " + anotherLibrary)

6. 计算两个集合的并集

使用 union 方法(或 ++ 操作符)可以得到两个集合的并集

// 6. 求两个图书馆的并集
val unionBooks = libraryBooks.union(anotherLibrary)
println("\n两个图书馆的并集: " + unionBooks)

7. 计算两个集合的交集

使用 intersect 方法可以得到两个集合的交集:

// 7. 求两个图书馆的交集
val intersectBooks = libraryBooks.intersect(anotherLibrary)
println("\n两个图书馆的交集: " + intersectBooks)

完整代码

初始图书馆书籍: Set(Java 编程思想, Scala 实战, Effective Java, 设计模式:可复用面向对象软件的基础)

添加新书后的图书馆: Set(Python 从入门到实践, Java 编程思想, Scala 实战, Effective Java, 算法导论, 设计模式:可复用面向对象软件的基础)

删除一本书后的图书馆: Set(Python 从入门到实践, Java 编程思想, Scala 实战, 算法导论, 设计模式:可复用面向对象软件的基础)

'Python 从入门到实践' 是否在图书馆中: true
'JavaScript 高级程序设计' 是否在图书馆中: false

另一个图书馆的书籍: Set(Python 从入门到实践, 深入理解计算机系统, Scala 实战, 数据结构与算法分析)

两个图书馆的并集: Set(Python 从入门到实践, Java 编程思想, Scala 实战, 算法导论, 深入理解计算机系统, 数据结构与算法分析, 设计模式:可复用面向对象软件的基础)

两个图书馆的交集: Set(Python 从入门到实践, Scala 实战)