case class 实训

27 阅读1分钟
  1. 使用 case class 创建图书信息类 Book:包含四个属性:ID,书名,作者,价格,数量。
  2. 创建一个名为 BookList 的可变 List,它只能用来保存 Book 的实例。
  3. 初始化三本不同的书(注意 id 不同就是不同的书),加入到 BookList 中。
  4. 添加一本已经存在的书。此时应该去修改 BookList 中对应书目的数量,而不是去添加一条新数据。
  5. 根据图书名称查询是否在列表中(通过遍历列表对比名称)
  6. 删除指定书名的书
  7. 删除指定 ID 的书
  8. 对于图书按价格从高到低排序。
  9. 遍历图书列表,并打印每本书的详细信息
  10. 展示全部的总的金额
package caseclass
import scala.collection.mutable.ListBuffer
object caseclass4 {
  // 1
  case class Book(id:Int, name:String, author:String, price:Double, var amount:Int)

  def main(args:Array[String]): Unit = {
    //2
    val BookList: ListBuffer[Book] = ListBuffer()
    // 3
    val book1 = Book(1, "姐姐和我交换人生吧", "梦语", 20.2, 10)
    val book2 = Book(2, "暗恋你,我也是", "梦语", 100.8, 3)
    val book3 = Book(3, "养女归来", "梦语", 50, 5)
    BookList += book1
    BookList += book2
    BookList += book3
    //4
    //val book4=Book(3."养女归来","梦语", 50, 5)
    val book4=Book(4,"九岁神探","梦语", 50, 15)
    val rst4=BookList.find(ele => ele.id == book4.id)
    if(rst4.isDefined) { //修改数量
      rst4.get.amount = rst4.get.amount + book4.amount
    } else {
      BookList += book4
    }

    // 5
    var bookName = "暗恋你,我也是"
    val rst0 = BookList.find(ele => ele.name == bookName)
    if(rst0.isDefined){
      println(s"《${bookName}》 存在")
    } else {
      println(s"《${bookName}》 不存在")
    }

    //6 删除书名是"霸道总裁爱上我"
     bookName = "暗恋你,我也是"
    val rst1 = BookList.find(ele=>ele.name==bookName)
    if(rst1.isDefined){
      BookList -= rst1.get
      println(s"删除书名为${bookName}的书成功")
    } else {
      println(s"没有找到书名为: ${bookName}的书")
    }

    // 7 删除id为1的书
    val id = 1
    val rst2 = BookList.find (ele=>ele.id == id )
    if (rst2.isDefined) {
      BookList. -= (rst2.get)
      println("删除id=$id的书成功")
    } else {
      println("没有找到id=$id的书")
    }
    // 8
   val newList =BookList.sortWith((a,b) =>{
     a.price >b.price
   })

    // 9
    BookList.foreach(ele => {
     println(s"${ele.id} ${ele.name} ${ele.price}")
    })

    //10
    var totalPrice = 0.0
    newList.foreach(ele => {
      totalPrice += ele.price * ele.amount
    })
    println(s"总价格 :${totalPrice}")

  }

}

运行结果如下:

image.png