Имея val hm: HashMap[org.joda.time.DateTime, MyType]
, я пытаюсь получить первый и последний DateTime
из набора с помощью hm.keys.min
и hm.keys.max
соответственно, но компилятор говорит No implicit Ordering defined for org.joda.time.DateTime
. Как определить этот порядок (интересны как неявные, так и явные варианты)?
Как определить порядок в Scala?
Ответ 1
object Joda {
implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
}
// elsewhere
import Joda._
dateTimes.sorted
Ответ 2
Чтобы облегчить работу с Joda DateTime в Scala, было создано 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