scala:Map 的练习题(二)

34 阅读2分钟

使用scala编程,完成如下功能。

  1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
  2. 使用 += 操作符添加两本新的书籍到图书馆集合中。
  3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
  4. 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
  5. 使用 -= 操作符从图书馆集合中删除一本书。
  6. 遍历图书馆书籍 Map,并打印出每本书的信息。
package map

/**
 * 使用scala编程,完成如下功能。
 *
 * 1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
 *
 * 2. 使用 += 操作符添加两本新的书籍到图书馆集合中。
 *
 * 3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
 *
 * 4. 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
 *
 * 5. 使用 -= 操作符从图书馆集合中删除一本书。
 *
 * 6. 遍历图书馆书籍 Map,并打印出每本书的信息。
 */
import scala.collection.mutable

object exercise01 {
  def main(args: Array[String]): Unit = {
    import scala.collection.mutable
        // 1. 创建可变Map,键为书籍编号,值为(书名, 作者, 库存)的元组
        val library = mutable.Map(
          1 -> ("悲惨世界", "雨果", 5),
          2 -> ("童年", "高尔基", 3),
          3 -> ("简爱", "夏洛蒂", 1)
        )
        println("1. 初始库存:")
        println(library)

        // 2. 使用 += 添加两本新书
        library += (4 -> ("红与黑", "司汤达", 6), 5 -> ("高老头", "巴尔扎克", 8))
        println("\n2. 添加新书后:")
        println(library)

        // 3. 使用get方法查询特定书籍
        val bookId = 4
        val bookInfo = library.get(bookId)
        println(s"\n3. 查询编号${bookId}的书籍:")
        bookInfo match {
          case Some(info) => println(s"找到:$info")
          case None => println("未找到该书籍")
        }

        // 4. 修改某本书的库存数量(以编号2为例,库存改为10)
        val updateId = 2
        library(updateId) = (library(updateId)._1, library(updateId)._2, 10)
        println(s"\n4. 修改编号${updateId}的库存后:")
        println(library)

        // 5. 使用 -= 删除一本书(编号3)
        val deleteId = 3
        library -= deleteId
        println(s"\n5. 删除编号${deleteId}后:")
        println(library)

        // 6. 遍历Map并打印所有书籍信息
        println("\n6. 遍历所有书籍:")
        library.foreach { case (id, (name, author, stock)) =>
          println(s"编号:$id,书名:$name,作者:$author,库存:$stock")
        }
      }
    }

输出结果:

屏幕截图 2025-12-01 103107.png