scala中的case class

Scala 复制代码
package test_27
//Set的特点:唯一(元素不同);无序
//case class定义一组数据
case class Book(var bookName:String,var author:String,var price:Double){

}
object caseclass {
  def main(args: Array[String]): Unit = {
    //定义一个可变set
   val set1=scala.collection.mutable.Set[Book]()
    //向Set中添加两条一样的数据
    val book1=new Book("西游记","吴承恩",100)
    val book2=new Book("西游记","吴承恩",100)
     val book3=new Book("西游记","吴承恩",100)
     println(book1==book2)
     set1+=book1
    set1+=book2
    set1+=book3
    set1.foreach(s=>{
      println(s.author)
    })

  }

}

去掉case还能否去重?

Scala 复制代码
package test_27
//Set的特点:唯一(元素不同);无序
//case class定义一组数据
//case class Book(var bookName:String,var author:String,var price:Double){
//
//}
 class Book(var bookName:String,var author:String,var price:Double){
  //判断是否相等的逻辑bookName相等
  override def equals(obj: Any): Boolean = {
//    println("equal")
//   true
    val ob=obj.asInstanceOf[Book]
    ob.bookName==bookName
  }

  override def hashCode(): Int = bookName.hashCode

  override def toString: String = s"书名:$bookName\t 作者:$author \t 价格:$price"
}

//1.属性的默认修饰是val(不可变),说明定义对象不能改属性
//2.可以省略new
//3.case class它自动提供:
//equals方法
//hashCode方法
//toString方法
case class Student( name:String)
object caseclass {
  def main(args: Array[String]): Unit = {
    val s1=new Student("小花")
println(s1)
    //定义一个可变set
   val set1=scala.collection.mutable.Set[Book]()
    //向Set中添加两条一样的数据
    val book1=new Book("西游记","吴承恩",100)
    val book2=new Book("西游记","吴承恩",100)
     val book3=new Book("西游记","吴承恩",100)
     println(book1==book2)
     set1+=book1
    set1+=book2
    set1+=book3
    set1.foreach(s=>{
      println(s.author)
    })

  }

}
相关推荐
王元_SmallA几秒前
pgsql:connection failed connection to server at
java·后端
绝无仅有3 分钟前
大厂面试相关文章:深入技术面试中的核心知识点
后端·面试·架构
绝无仅有7 分钟前
面试文章:网络协议与redis安全,https协议,TCP三次握手,四次挥手等面试经典问题
后端·面试·架构
这儿有一堆花13 分钟前
C语言递归宏详解
c语言·开发语言·c++
csbysj202016 分钟前
C 标准库 - `<ctype.h>`
开发语言
郝学胜-神的一滴21 分钟前
计算机图形中的法线矩阵:深入理解与应用
开发语言·程序人生·线性代数·算法·机器学习·矩阵·个人开发
百锦再33 分钟前
第8章 模块系统
android·java·开发语言·python·ai·rust·go
m0_5913389140 分钟前
day8鹏哥C语言--函数
c语言·开发语言·算法
oplp44 分钟前
回过头来重新对C语言进行深度学习(一)
c语言·开发语言
IT_陈寒1 小时前
7个鲜为人知的JavaScript性能优化技巧,让你的网页加载速度提升50%
前端·人工智能·后端