Scala实训内容

36 阅读2分钟

1.创建一个可变 Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。

2.使用 += 操作符添加两本新的书籍到图书馆集合中。

3.根据书籍编号查询某一本特定的书籍信息,使用 get 方法,并输出结果。

4.修改某本书籍的库存数量(假设可以通过键找到对应的元组并修改其中的值,这里体现可变 Map 的特性)。

5.使用 -= 操作符从图书馆集合中删除一本书。

6.遍历图书馆书籍 Map,并打印出每本书的信息。

package Map
import scala.collection.mutable.Map
object shixun {
  def main(args: Array[String]): Unit = {
    // 1. 创建可变 Map,存储书籍信息(键为书籍编号,值为包含名称、作者、库存的元组)
    val booksMap: Map[String, (String, String, Int)] = Map(
      "B001" -> ("《小王子》", "圣埃克苏佩里", 10),
      "B002" -> ("《活着》", "余华", 15),
      "B003" -> ("《百年孤独》", "加西亚·马尔克斯", 8)
    )

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

    // 2. 使用 += 添加两本新书
    booksMap += ("B004" -> ("《三体》", "刘慈欣", 20))
    booksMap += ("B005" -> ("《解忧杂货店》", "东野圭吾", 12))

    println("\n添加新书后:")
    booksMap.foreach { case (id, (name, author, stock)) =>
      println(s"编号:$id,名称:$name,作者:$author,库存:$stock")
    }

    // 3. 根据编号查询特定书籍(用 get 方法)
    val bookIdToFind = "B002"
    val foundBook = booksMap.get(bookIdToFind)
    foundBook match {
      case Some((name, author, stock)) =>
        println(s"\n查询编号为$bookIdToFind 的书籍:名称:$name,作者:$author,库存:$stock")
      case None =>
        println(s"\n未找到编号为$bookIdToFind 的书籍")
    }

    // 4. 修改某本书的库存数量(这里以 B001 为例,将库存改为 5)
    val bookIdToUpdate = "B001"
    if (booksMap.contains(bookIdToUpdate)) {
      val (name, author, _) = booksMap(bookIdToUpdate)
      booksMap(bookIdToUpdate) = (name, author, 5)
      println(s"\n修改后,编号为$bookIdToUpdate 的书籍库存:${booksMap(bookIdToUpdate)._3}")
    }

    // 5. 使用 -= 删除一本书(以 B003 为例)
    val bookIdToRemove = "B003"
    booksMap -= bookIdToRemove
    println(s"\n删除编号为$bookIdToRemove 的书籍后:")
    booksMap.foreach { case (id, (name, author, stock)) =>
      println(s"编号:$id,名称:$name,作者:$author,库存:$stock")
    }

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