scala中的case class

26 阅读2分钟

(一) case class的定义

package caseclass01

object l1 {
  case class Student(var id:String,var name:String) {
    //override def equals(obj:Any):Boolean={
    // val other=obj.asInstanceof[Student]
    //other.id==id && other.name==name
    // }

  }

  def main(args: Array[String]): Unit = {

    val stu1= new Student("1","小花")
    val stu2= new Student("1","小花")
    println(stu1)

    println(stu1 == stu2)

    val set1=scala.collection.mutable.Set(stu1,stu2)
    //val set1=Set(1,2,3,1,1,1)

    println(set1)//?

  }

}
  • case class(样例类) v.s. class(类)
  • 1.case class 可以在定义对象时,省略new
  • 2.case class 的属性在默认情况下是只读的。如果希望可以修改,那需要主动使用var.
  • 3.case class 会自动重写 equals,toString......
package caseclass01
/*
*
* case class(样例类)   v.s.  class(类)
*  1.case class 可以在定义对象时,省略new
*  2.case class 的属性在默认情况下是只读的。如果希望可以修改,那需要主动使用var.
*  3.case class 会自动重写 equals,toString......
*
* 当我们只需要使用类来表示数据的时候,就可以选择使用case class,它更加简单!
*
*
 */


object l2 {
  case class Student1(var id:String,var name:String) {

  }
       class Student2(var id:String,var name:String) {

       }

  def main(args: Array[String]): Unit = {

    val stu1= new Student2("1","小花")
    val stu2= new Student2("1","小花")


    println(stu1 == stu2)
    println(stu1)
    println(Student1("1","小花"))


  }

}

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

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

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

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

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

6. 删除指定书名的书

7. 删除指定ID的书

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

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

10. 计算全部总的金额

package caseclass01

object l3 {
  //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","霸道总裁爱上我","忘语1",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}")


  }


}

caseclass

1.case class的定义

2.case class 的特点

3.case class 与普通class的区别