Scala中的case class练习

46 阅读1分钟

步骤任务:

1. 使用case class创建图书信息类Book:包含四个属性:ID,书名,作者,价格,数量。

2. 创建一个名为bookList的可变List,它只能用来保存Book的实例。

3. 初始化三本不同的书(注意id不同就是不同的书),加入到bookList中。

4. 添加一本已经存在的书。此时应该去修改bookList中对应书目的数量,而不是去添加一条新数据。

5. 根据图书名称查询是否在列表中(通过遍历列表对比名称)

6. 删除指定书名的书

7. 删除指定ID的书

8. 对于图书按价格从高到低排序。

9. 遍历图书列表,并打印每本书的详细信息

10. 计算全部总的金额

代码

object caseclass03 {
  // 1
  case class Book(id:String, name:String, author:String, price:Double, amount:Int) {

  }

  def main(args: Array[String]): Unit = {
    // 2
    val book1 = Book("1","凡人修仙传","忘语", 80.5, 10)
    val book2 = Book("2","平凡的世界","路遥", 50, 9)
    val book3 = Book("3","围城","钱钟书", 20, 5)
    // 3
    val bookList = scala.collection.mutable.ListBuffer(book1,book2,book3)
    
    //7
    val id = "1"
    val rst = bookList.find(book=>book.id == id)
    if(rst.isDefined){
      bookList -= rst.get
      println(s"删除成功")
    }
    
    // 8
//    val sortList = bookList.sortBy(_.price)
    val sortList = bookList.sortWith((a,b)=>a.price>b.price)

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

    // 10
    var total:Double = 0
    bookList.foreach(ele =>{
      total += ele.price*ele.amount
    })
    println(s"总的价格是:${total}")
  }
}

输出结果

删除成功
2 平凡的世界 路遥 50.0 9
3 围城 钱钟书 20.0 5
总的价格是:550.0