【问题标题】:How to define an Ordering in Scala?如何在 Scala 中定义排序?
【发布时间】:2019-01-28 08:25:44
【问题描述】:

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

【问题讨论】:

    标签: scala sorting scala-collections


    【解决方案1】:
    object Joda {
        implicit def dateTimeOrdering: Ordering[DateTime] = Ordering.fromLessThan(_ isBefore _)
    }
    
    // elsewhere
    import Joda._
    dateTimes.sorted
    

    【讨论】:

      【解决方案2】:

      为了便于在 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-28
        • 2018-11-03
        • 2011-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-03-16
        • 2017-05-18
        • 1970-01-01
        相关资源
        最近更新 更多