scala中map习题

38 阅读3分钟

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

  1. 创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。
  2. 使用 += 操作符添加两本新的书籍到图书馆集合中。
  3. 根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。
  4. 修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。
  5. 使用 -= 操作符从图书馆集合中删除一本书。
  6. 遍历图书馆书籍 Map,并打印出每本书的信息。
import scala.collection.mutable
object map2 {
   def main(args: Array[String]): Unit = {
     // 1. 创建可变Map,存储书籍信息
     val library = mutable.Map[String, (String, String, Int)](
       "B01" -> ("罪与罚", "费奥多尔·米哈伊洛维奇·陀思妥耶夫斯基", 5),
       "B02" -> ("罗生门", "芥川龙之介", 3),
       "B03" -> ("山月记", "中岛敦", 7)
     )

     println("初始图书馆书籍信息:")
     library.foreach { case (id, (name, author, stock)) =>
       println(s"编号: $id, 名称: $name, 作者: $author, 库存: $stock")
     }
     println()

     // 2. 使用 += 操作符添加两本新书籍
     library += ("B04" -> ("人间失格", "太宰治", 6))
     library += ("B05" -> ("污浊了的悲伤之中", "中原中也", 4))

     println("添加新书后的图书馆书籍信息:")
     library.foreach { case (id, (name, author, stock)) =>
       println(s"编号: $id, 名称: $name, 作者: $author, 库存: $stock")
     }
     println()

     // 3. 根据书籍编号查询特定书籍信息
     val bookId = "B002"
     val bookInfo = library.get(bookId)

     bookInfo match {
       case Some((name, author, stock)) =>
         println(s"查询结果 - 编号: $bookId, 名称: $name, 作者: $author, 库存: $stock")
       case None =>
         println(s"未找到编号为 $bookId 的书籍")
     }
     println()

     // 4. 修改某本书籍的库存数量
     val updateBookId = "B001"
     library.get(updateBookId) match {
       case Some((name, author, stock)) =>
         // 更新库存数量(增加2本)
         library(updateBookId) = (name, author, stock + 2)
         println(s"已更新书籍 $name 的库存数量:$stock -> ${stock + 2}")
       case None =>
         println(s"未找到编号为 $updateBookId 的书籍")
     }
     println()

     // 5. 使用 -= 操作符删除一本书
     val removeBookId = "B003"
     library -= removeBookId
     println(s"已删除编号为 $removeBookId 的书籍")
     println()

     // 6. 遍历并打印最终的图书馆书籍信息
     println("最终的图书馆书籍信息:")
     library.foreach { case (id, (name, author, stock)) =>
       println(s"编号: $id, 名称: $name, 作者: $author, 库存: $stock")
     }
   }
 }

输出:

初始图书馆书籍信息:
编号: B01, 名称: 罪与罚, 作者: 费奥多尔·米哈伊洛维奇·陀思妥耶夫斯基, 库存: 5
编号: B02, 名称: 罗生门, 作者: 芥川龙之介, 库存: 3
编号: B03, 名称: 山月记, 作者: 中岛敦, 库存: 7

添加新书后的图书馆书籍信息:
编号: B01, 名称: 罪与罚, 作者: 费奥多尔·米哈伊洛维奇·陀思妥耶夫斯基, 库存: 5
编号: B02, 名称: 罗生门, 作者: 芥川龙之介, 库存: 3
编号: B03, 名称: 山月记, 作者: 中岛敦, 库存: 7
编号: B04, 名称: 人间失格, 作者: 太宰治, 库存: 6
编号: B05, 名称: 污浊了的悲伤之中, 作者: 中原中也, 库存: 4

未找到编号为 B002 的书籍

未找到编号为 B001 的书籍

已删除编号为 B003 的书籍

最终的图书馆书籍信息:
编号: B01, 名称: 罪与罚, 作者: 费奥多尔·米哈伊洛维奇·陀思妥耶夫斯基, 库存: 5
编号: B02, 名称: 罗生门, 作者: 芥川龙之介, 库存: 3
编号: B03, 名称: 山月记, 作者: 中岛敦, 库存: 7
编号: B04, 名称: 人间失格, 作者: 太宰治, 库存: 6
编号: B05, 名称: 污浊了的悲伤之中, 作者: 中原中也, 库存: 4