去重
- Set是可以去重的
- 创建一些对象,把他们装入Set,看看是否能去重!
package caseclass
object classClass {
class Stu(var name:String, var age:Int) {
override def equals(obj: Any): Boolean = {
val 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
样例类,相比与普通的类,它有三点不同
-
- 在创建对象时,可以省略 new
-
- 默认情况下,属性都是只读的
-
- 自己自动添加相关的equals,toString 等方法。 特别适合用来描述数据。
object classClass02 {
case class Stu(name:String, age:Int)
def main(args: Array[String]): Unit = {
val stu1 = Stu("小花", 18)
// 2. 默认情况下,属性都是只读的
// stu1.age = 19
// stu1.name = "xxx"
val stu2 = Stu("小花", 18)
println(stu1)
println(stu1 == stu2)
val set1 = Set(stu1, stu2)
println(set1)
}
}
题目
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", "自控力", "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
}
}
}
// 如何遍历出每个元素
package iterator
object iterator01 {
def main(args: Array[String]): Unit = {
val list = List(1, 2, 3, 4, 5)
// 如何遍历出每个元素
// list.foreach(ele => println(ele))
// 19: 知识:输出 3、4
val it = list.iterator.drop(2).take(2)
while(it.hasNext){
println(it.next())
}
}
}
- 迭代器
- iterator
- 集合,有很多的元素,提供一个统一的方式来访问这些元素。
-
- 获取迭代器。
-
- hasNext 判断是否结束
-
- next 获取当前元素,并移动迭代器
-
- next() 获取当前的元素,移动一次迭代器
-
- hasNext() 判断是否有下一个
-
- drop(n) 从当前位置开始,跳过n个元素, 返回一个新的迭代器
object iterator {
fun main(args: Array<String>): Unit = {
// 获取一个迭代器
val it = listOf(1,2,3,4).iterator()
// println(it.next())
// println(it.next())
// println(it.next())
// println(it.next())
// println(it.next()) // NoSuchElementException: head of empty list
val it1 = it.drop(2)
while(it1.hasNext()) {
println(it1.next()) // 3,4
}
}
}