使用 case class 创建图书信息类 Book

71 阅读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", "熊出没之冬日乐翻天", "俞真", 30)
    // 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
    }
  }
}