斯卡拉的Ordering特征有一种方法reverse似乎是"官方"的方式来获得一个TreeMap"错误"的方式.
特征的片段如下所示:
trait Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializable {
outer =>
override def reverse: Ordering[T] = new Ordering[T]{
override def reverse = outer
def compare(x: T, y: T) = outer.compare(y, x)
}
/*snip*/
}
Run Code Online (Sandbox Code Playgroud)
我认为它可以与Java相媲美Collections.reverseOrder,但Ordering.reverse当然不起作用.
如何使用TreeMap反向排序,例如:
new TreeMap[Foo, Bar](/*???*/)
Run Code Online (Sandbox Code Playgroud)
new TreeMap[Foo, Bar]()(implicitly[Ordering[Foo]].reverse)
Run Code Online (Sandbox Code Playgroud)
当然,假设这Ordering[Foo]是隐含的(例如Ordering[Int]或Ordering[String]).如果您将其定义为object X,则只需通过X.reverse.
请注意,此处的第一组括号必须为空 - 它只是在此特定情况下接收隐式参数的第二组括号.
| 归档时间: |
|
| 查看次数: |
2905 次 |
| 最近记录: |