scala Map test2

53 阅读1分钟

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

package Map
//test
import scala.collection.mutable

object map2 {

  def main(args: Array[String]): Unit = {
    // 1.
    val shuji = mutable.Map(
      "A1" -> ("《AAA》", "bbb", 10),
      "A2" -> ("《BBB》", "ccc", 15),
      "A3" -> ("《CCC》", "ddd", 8)
    )
    println(shuji)

    // 2.
    shuji += ("A4" -> ("《DDD》", "eee", 12))
    shuji += ("A5" -> ("《EEE》", "fff", 7))
    println(shuji)

    // 3.
    val chaId = "A2"
    val book = shuji.get(chaId)
    println(s"\n=== 查询书籍编号 $chaId ===")
    if (book.isDefined) {
      val (name, author, kucun) = book.get
      println(s"找到书籍:书名=$name, 作者=$author, 库存=$kucun")
    } else {
      println(s"未找到编号为 $chaId 的书籍")
    }

    // 4.
    val xiugaiId = "B003"
    println(s"\n=== 修改书籍编号 $xiugaiId 的库存 ===")
    if (shuji.contains(xiugaiId)) {
      val (name, author, oldkucun) = shuji(xiugaiId)
      val xinkucun = oldkucun + 5 // 库存增加5本
      shuji(xiugaiId) = (name, author, xinkucun)
      println(s"最终:原=$oldkucun → 新=$xinkucun")
    } else {
      println(s"未找到编号为 $xiugaiId 的书籍,无法更新")
    }

    // 5.
    val deleteId = "B005"
    shuji -= deleteId
    println(s"\n=== 删除书籍编号 $deleteId 后 ===")
    println(shuji)

    // 6.
    println("\n=== 图书馆最终书籍清单 ===")
    for ((bookId, (name, author, kucun)) <- shuji) {
      println(s"书籍编号:$bookId → 书名:$name, 作者:$author, 库存:$kucun 本")
    }
  }
}