练习

33 阅读1分钟
  1. 使用 case class 创建图书信息类 Book:包含四个属性:ID,书名,作者,价格。
  2. 创建一个名为 bookList 的可变 List,它只能用来保存 Book 的实例。
  3. 初始化三本不同的书(注意 id 不同就是不同的书),加入到 bookList 中。
  4. 添加一本已经存在的书。提示图书已存在。
  5. 添加一本新书,提示图书添加成功。
  6. 根据图书名称查询是否在列表中(通过遍历列表对比名称)
  7. 删除指定书名的书
  8. 删除指定 ID 的书
  9. 对于图书按价格从高到低排序。
  10. 遍历图书列表,并打印每本书的详细信息
package caseclass

import scala.collection.mutable.ListBuffer

object classClass03 {

  // 1
  case class Book(id:String, bookName:String, author:String, price:Double)

  def main(args: Array[String]): Unit = {

    val book1 = Book("001", "高效能人士的七个习惯", "韦伯", 50)
    val book2 = Book("002", "沉思录", "皇帝", 20)
    val book3 = Book("003", "自控力", "xx", 3)
    // 2, 3
    val bookList = scala.collection.mutable.ListBuffer(book1, book2, book3)

    val book4 = Book("004", "高效能人士的七个习惯", "韦伯", 10)
    // 4,5
    if(addNewBook(bookList, book4)){
      println("添加成功")
    } else {
      println("图书已经存在,添加失败")
    }

    // 6
    val bookName = "沉思录"
    if(queryBook(bookList, bookName)){
      println(s"<<${bookName}>> 存在!")
    } else {
      println(s"<<${bookName}>> 不存在!")
    }

    // 7,8
    delBook(bookList,bookName)

    // 9
    val orderBookList = bookList.sortBy(_.price).reverse

    // 10
    orderBookList.foreach(ele => {
      println(s"书名:《${ele.bookName}》")
      println(s"作者: ${ele.author}")
      println(s"价格: ${ele.price}")
      println()
    })
  }

  def delBook(bookList: ListBuffer[Book], bookName: String):Boolean = {
    // 检查图书是否存在
    val result = bookList.find(_.bookName == bookName)
    if(result.isDefined){
      bookList -= result.get
      true
    } else {
      false
    }
  }

  def queryBook(bookList: ListBuffer[Book], bookName: String):Boolean = {
    bookList.exists(_.bookName == bookName)
  }

  def addNewBook(bookList: ListBuffer[Book], book: Book):Boolean = {
    // 检查书是否存在
    if(bookList.exists(_.id==book.id)){
      false
    } else {
      bookList += book
      true
    }
  }
}

结果如下

屏幕截图 2025-12-10 100915.png