object caseclass01 {
//1.使用case class创建图书信息类Book:包含四个属性:ID,书名,作者,价格,数量。
case class Book(id:String,name:String,author:String,price:Double,amount:Int) {}
def main(args: Array[String]): Unit = {
//3.初始化三本不同的书(注意id不同就是不同的书),加入到bookList中。
val book1 = Book("1","西游记","吴承恩",32.3,10)
val book2 = Book("2","红楼梦","曹雪芹",35,9)
val book3 = Book("3","水浒传","施耐庵",35.6,5)
//2.创建一个名为bookList的可变List,它只能用来保存Book的实例。
val bookList = scala.collection.mutable.ListBuffer(book1,book2,book3)
//4.添加一本已经存在的书。此时应该去修改bookList中对应书目的数量,而不是去添加一条新数据。
def add(newBook: Book): Unit = {
val addBook = bookList.find(_.id == newBook.id)
if (addBook.isDefined) {
val updatedBook = addBook.get.copy(amount = addBook.get.amount + newBook.amount)
val index = bookList.indexOf(addBook.get)
bookList.update(index, updatedBook)
println(s"书'${newBook.name}'已存在,数量更新为:${updatedBook.amount}")
} else {
bookList += newBook
println(s"添加新书:${newBook.name}")
}
}
add(Book("1", "西游记", "吴承恩", 32.3, 5))
//5.根据图书名称查询是否在列表中(通过遍历列表对比名称)
def searchbookByName(bookName:String):Boolean = {
for (book <- bookList) {
if (book.name == bookName) {
return true
}
}
false
}
println(s"'西游记':${searchbookByName("西游记")}")
//6.删除指定书名的书
def removeBookByName(bookName: String): Boolean = {
val bookToRemove = bookList.find(_.name == bookName)
if (bookToRemove.isDefined) {
bookList -= bookToRemove.get
println(s"成功删除书:${bookName}")
true
} else {
println(s"未找到书:${bookName}")
false
}
}
removeBookByName("水浒传")
//7.删除指定ID的书
val id = "1"
val rst = bookList.find(book=>book.id == id)
if(rst.isDefined){
bookList -= rst.get
println(s"id为:${id} 的书删除成功")
}
//8.对于图书按价格从高到低排序。
val sortList = bookList.sortBy(_.price) //降序
//val sortList1 = bookList.sortWith((a,b)=>a.price>b.price) //升序
//9.遍历图书列表,并打印每本书的详细信息
bookList.foreach(ele =>{
println(s"ID:${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}")
}
}
运行结果如图: