2012-01-30 5 views
37

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?

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