Map例题题目
- 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
- 使用 += 操作符添加两本新的书籍到图书馆集合中。
- 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
- 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
- 使用 -= 操作符从图书馆集合中删除一本书。
- 遍历图书馆书籍 Map,并打印出每本书的信息。
例题代码
import scala.collection.mutable
object exercise {
def main(args: Array[String]): Unit = {
val library = mutable.Map[Int, (String, String, Int)](
1 -> ("水浒传", "施耐庵", 10),
2 -> ("三国演义", "罗贯中", 9)
)
println("===== 初始化后的图书馆书籍信息 =====")
println(library)
library += (3 -> ("西游记", "吴承恩", 11), 4 -> ("红楼梦", "曹雪芹", 12))
println("\n===== 添加两本新书后的书籍信息 =====")
println(library)
val bookId = 2
val queriedBook = library.get(bookId)
println(s"\n===== 查询编号为${bookId}的书籍 =====")
queriedBook match {
case Some((name, author, stock)) => println(s"找到书籍:名称=${name},作者=${author},库存=${stock}")
case None => println(s"未找到编号为${bookId}的书籍")
}
val bookIdToUpdate = 1
val newStock = 15
library.get(bookIdToUpdate) match {
case Some((name, author, _)) => library.update(bookIdToUpdate, (name, author, newStock))
case None => println(s"未找到编号为${bookIdToUpdate}的书籍,无法修改库存")
}
println(s"\n===== 修改编号为${bookIdToUpdate}的书籍库存为${newStock} =====")
println(library)
val bookIdToDelete = 3
library -= bookIdToDelete
println(s"\n===== 删除编号为${bookIdToDelete}的书籍后 =====")
println(library)
println("\n===== 遍历图书馆所有书籍信息 =====")
library.foreach { case (id, (name, author, stock)) =>
println(s"书籍编号:${id},名称:${name},作者:${author},库存:${stock}")
}
}
}