一.Set
- Set可以去重
class Stu(var name:String,var age:Int) {
override def equals(obj: Any): Boolean = {
var other = obj.asInstanceOf[Stu]
other.age == age && other.name == name
}
override def toString: String = s"Stu(${name},${age})"
}
def main(args: Array[String]): Unit = {
val stu1 = new Stu("小花",18)
val stu2 = new Stu("小花",18)
println(stu1)
println(stu1 == stu2)
val set1 = Set(stu1,stu2)
println(set1)
二.case class
1. 样例类,相比于普通的类,他有三点不同
- 在创建对象时,可以省略new
- 默认情况下,属性都是只读性
- 自己自动添加相关的equals,toString等方法
特点
(1)不可变性
case class 创建的对象是不可变的,一旦创建,其属性值不能被修改。
(1)实例化可以省略new
普通的class 在实例化时,必须要写new的。
(2)自动重写方法: toString, equals, hashCode, copy。
2.case class 是 Scala 中一种特殊的类,它用于创建不可变的数据容器。
3.特别适合用来描述数据
case class Stu(name:String,age:Int)
def main(args: Array[String]): Unit = {
val stu1 = new Stu("小花",18)
----------------------------------------------
默认情况下,属性都是只读的
stu1.age = 19
stu1.name = “xxx”
-----------------------------------------------
val stu2 = new Stu("小花",18)
println(stu1)
println(stu1 == stu2)
val set1 = Set(stu1,stu2)
println(set1)
}
三.创建图书信息类
步骤任务:
1. 使用case class创建图书信息类Book:包含四个属性:ID,书名,作者,价格。
2. 创建一个名为bookList的可变List,它只能用来保存Book的实例。
3. 初始化三本不同的书(注意id不同就是不同的书),加入到bookList中。
4. 添加一本已经存在的书。提示图书已存在。
5. 添加一本新书,提示图书添加成功。
6. 根据图书名称查询是否在列表中(通过遍历列表对比名称)
7. 删除指定书名的书
8. 删除指定ID的书
9. 对于图书按价格从高到低排序。
10. 遍历图书列表,并打印每本书的详细信息
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
}
}
}