如何在Scala中定义订购?

时间:2012-01-30 08:27:42

标签: scala sorting scala-collections

val hm: HashMap[org.joda.time.DateTime, MyType]我试图分别通过DateTimehm.keys.min来获取集合的第一个和最后一个hm.keys.max,但编译器说No implicit Ordering defined for org.joda.time.DateTime }。如何定义这个排序(隐式和显式选项都很有趣)?

2 个答案:

答案 0 :(得分:100)

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

// elsewhere
import Joda._
dateTimes.sorted

答案 1 :(得分:17)

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

使用

将其包含在项目中
libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.8.0"

您只需导入OrderingImplicits即可。要么一下子全部:

import com.github.nscala_time.time.OrderingImplicits._

或特定的一个:

import com.github.nscala_time.time.OrderingImplicits.DateTimeOrdering