在Java中,我可以做类似以下的事情:
TreeMap<Double, String> myMap = new TreeMap<Double, String>();如果我想按相反的顺序排序,我可以提供一个比较器,例如:
class ReverseOrder implements Comparator<Object> {
    public ReverseOrder() {
    }
    public int compare(Object o1,Object o2) {
        Double i1=(Double)o1;
        Double i2=(Double)o2;
        return -i1.compareTo(i2);
    }
}并将该对象实例化为
TreeMap<Double, MyObject> myMap = new TreeMap<Double, MyObject>()(new ReverseOrder());如果我想在Scala中创建可变的Java TreeMap,我可以这样做:
var treeMap = new java.util.TreeMap[Double,MyObject]如何在Scala中实现Java比较器,以便可以按升序或降序排序?这里,我假设我不能将Scala排序特征与Java集合混合使用。另外,有没有人知道在Scala中是否/何时会有一个可变的TreeMap?
发布于 2011-02-04 04:44:27
您可以使用Ordering,并像这样定义ReverseOrder:
case class ReverseOrder[T: Ordering] extends Comparator[T] {
  def compare(o1: T, o2: T) = -implicitly[Ordering[T]].compare(o1, o2)
}
val treeMap = new TreeMap[Double, String](ReverseOrder[Double]) 发布于 2011-02-19 08:54:37
Scala特征Ordering扩展了Comparator接口,因此您可以简明扼要地完成此操作:
val treeMap = new java.util.TreeMap[Double, String](Ordering.Double.reverse)https://stackoverflow.com/questions/4891340
复制相似问题