如何在Scala中定义订购?

Iva*_*van 41 sorting scala scala-collections

val hm: HashMap[org.joda.time.DateTime, MyType]我想获得第一和最后DateTime借助一组hm.keys.min,并hm.keys.max分别但是编译器说No implicit Ordering defined for org.joda.time.DateTime.如何定义这个排序(隐式和显式选项都很有趣)?

ret*_*nym 100

object Joda {
    implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
}

// elsewhere
import Joda._
dateTimes.sorted
Run Code Online (Sandbox Code Playgroud)


Maj*_*jki 17

为了便于在Scala中使用Joda DateTime,创建了nscala-time:https: //github.com/nscala-time/nscala-time

将其包含在您的项目中之后

libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.8.0"
Run Code Online (Sandbox Code Playgroud)

你可以导入OrderingImplicits.要么一下子全部:

import com.github.nscala_time.time.OrderingImplicits._
Run Code Online (Sandbox Code Playgroud)

或特定的一个:

import com.github.nscala_time.time.OrderingImplicits.DateTimeOrdering
Run Code Online (Sandbox Code Playgroud)