Avendo val hm: HashMap[org.joda.time.DateTime, MyType]
Sto cercando di ottenere il primo e l'ultimo DateTime
del set tramite hm.keys.min
e hm.keys.max
rispettivamente ma il compilatore dice No implicit Ordering defined for org.joda.time.DateTime
. Come definire questo ordine (entrambe le opzioni implicite ed esplicite sono interessanti)?Come definire un ordinamento in Scala?
37
A
risposta
95
object Joda {
implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
}
// elsewhere
import Joda._
dateTimes.sorted
14
Per facilitare lavorare con Joda DateTime a Scala, è stato creato nscala-tempo: https://github.com/nscala-time/nscala-time
Dopo aver incluso nel vostro progetto con
libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.8.0"
si può semplicemente importare OrderingImplicits
. O tutto in una volta:
import com.github.nscala_time.time.OrderingImplicits._
o uno in particolare:
import com.github.nscala_time.time.OrderingImplicits.DateTimeOrdering