Подтвердить что ты не робот

Как определить порядок в Scala?

Имея val hm: HashMap[org.joda.time.DateTime, MyType], я пытаюсь получить первый и последний DateTime из набора с помощью hm.keys.min и hm.keys.max соответственно, но компилятор говорит No implicit Ordering defined for org.joda.time.DateTime. Как определить этот порядок (интересны как неявные, так и явные варианты)?

4b9b3361

Ответ 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