在scala类中实现哈希方法
问题描述:
我有一个基本的抽象类和从它派生的几个案例类。我需要一个哈希函数来识别重复的case对象。是否有内置的哈希方法在scala中?在scala类中实现哈希方法
例如,我有一个基类
abstract class CDR_NOR {
val SUBSCRIBER_ID: String
val CHARGING_ID: String
val NODE_ID: String
val START_TIME: String
val hashvalue:Strng
//hashvalue=this.hashCode().toString() doesn't work here
}
,也有一些派生类如下:
case class CHG_NOR(Subscriber_ID: String,..., hashvalue:String) extends CDR_NOR
case class NW_NOR(Subscriber_ID: String,...,hashvalue:String) extends CDR_NOR
我需要在基类的哈希函数,使一个独特的价值对于每个派生类。
答
案例类默认情况下在其构造函数参数上具有散列码实现。你可以像下面那样使用它,并避免实现你自己的hashcode进行相等性测试。
abstract class CDR_NOR {
val SUBSCRIBER_ID: String
val CHARGING_ID: String
val NODE_ID: String
val START_TIME: String}
case class CHG_NOR(SUBSCRIBER_ID: String, CHARGING_ID: String, NODE_ID: String, START_TIME: String) extends CDR_NOR
val x = CHG_NOR("001","123","1","12:23AM")
val y = CHG_NOR("001","123","1","12:23AM")
x == y // true
如果你想定制你的哈希码实现,然后覆盖的hashCode抽象类象下面这样:
override def hashCode: Int = {// your custom implementation}
你可以给你的问题的示例代码说明? – Samar
我编辑了我的问题.. – mahdi62