【问题标题】:No implicit Ordering defined for my case class没有为我的案例类定义隐式排序
【发布时间】:2016-12-19 08:45:50
【问题描述】:

我有一个案例类如下:

case class AGG_RECON_4( var VOL_PROBE_DL_VOL:Int, var VOL_PROBE_FREE_VOL:Int, var VOL_PROBE_TOT_VOL:Int, VOL_NW_UL_VOL:Int,VOL_NW_DL_VOL:Int, VOL_NW_FREE_VOL:Int, VOL_NW_TOT_VOL:Int, VOL_CHG_UL_VOL:Int,
                    VOL_CHG_DL_VOL:Int, VOL_CHG_FREE_VOL:Int, VOL_CHG_TOT_VOL:Int, VOL_DXE_Session_End_Time:String, VOL_NW_Session_End_Time:String,
                    VOL_CHG_Session_End_Time:String, VOL_Session_Closed_Time:String, VOL_DXE_Is_Completed:Boolean, VOL_NW_Is_Completed:Boolean, VOL_CHG_Is_Completed:Boolean, VOL_Is_Closed:Boolean, VOL_Session_Category:String) extends Serializable

case class AGG_RECON_3( CHG_ROAM_TYPE:String, CHG_APN:String,
                    CHG_APN_Category:String, CHG_Charging_Characteristics:String, CHG_Rate_Plan:String, CHG_Rating_Group:String, var CHG_CDR_Count:Int, var VOL_PROBE_UL_VOL:Int) extends Serializable

case class AGG_RECON_2(NW_First_Report_Time:String, NW_Last_Report_Time:String, NW_Session_Start_Time:String, NW_IMSI:String, NW_MSISDN:String, NW_RAT_Type:String, NW_ROAM_TYPE:String, NW_APN:String, NW_APN_Category:String, NW_Charging_Characteristics:String, var NW_CDR_Count:Int,
                   CHG_First_Report_Time:String, CHG_Last_Report_Time:String, CHG_Session_Start_Time:String, CHG_IMSI:String, CHG_MSISDN:String) extends Serializable


case class AGG_RECON(SUBSCRIBER_ID:String, ChargingID:String ,NodeID:String, START_TIME:String, DXE_First_Report_Time:String, DXE_Last_Report_Time:String, DXE_Session_Start_Time:String, DXE_Bearer_Creation_Time:String, DXE_IMSI:String, DXE_MSISDN:String, DXE_RAT_Type:String,
                 DXE_Subscriber_Type:String, DXE_VPMN:String, DXE_ROAM_TYPE:String, DXE_APN:String, DXE_APN_Category:String, DXE_Charging_Characteristics:String,var DXE_CDR_Count:Int,agg_recon_2:AGG_RECON_2,agg_recon_3:AGG_RECON_3,agg_recon_4:AGG_RECON_4) extends Ordered[AGG_RECON] with Serializable
{

def compare(that: AGG_RECON): Int = {

var formatter: DateTimeFormatter = null
var d1: DateTime= //..
var d2: DateTime =//..



return d1.compareTo(d2)

}

}

然后我列出我的案例类实例;但是,当我尝试对其进行排序时:

val elements=//Array[AGG_RECONN]
val sorted_cdrs=elements().sorted[AGG_RECON]

我得到:没有为 AGG_RECON 定义隐式排序。

【问题讨论】:

    标签: scala


    【解决方案1】:

    不要在AGG_RECON 中实现Ordered。相反,像这样定义implicit Ordering[AGG_RECON]

    object AGG_RECON {
      implicit object AGG_RECON_Ordering extends Ordering[AGG_RECON] {
        override def compare(x: AGG_RECON, y: AGG_RECON) = ??? // Compare x and y
      }
    }
    

    (旁注:真的有必要使用 UPPER_CASE 名称吗?它确实与约定冲突。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2018-02-08
      • 2017-05-17
      • 1970-01-01
      • 2013-05-31
      • 2013-11-28
      • 2013-02-10
      相关资源
      最近更新 更多