首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >混合使用Java和Scala来使用可变TreeMap

混合使用Java和Scala来使用可变TreeMap
EN

Stack Overflow用户
提问于 2011-02-04 04:27:49
回答 2查看 1.8K关注 0票数 3

在Java中,我可以做类似以下的事情:

代码语言:javascript
运行
复制
TreeMap<Double, String> myMap = new TreeMap<Double, String>();

如果我想按相反的顺序排序,我可以提供一个比较器,例如:

代码语言:javascript
运行
复制
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);
    }
}

并将该对象实例化为

代码语言:javascript
运行
复制
TreeMap<Double, MyObject> myMap = new TreeMap<Double, MyObject>()(new ReverseOrder());

如果我想在Scala中创建可变的Java TreeMap,我可以这样做:

代码语言:javascript
运行
复制
var treeMap = new java.util.TreeMap[Double,MyObject]

如何在Scala中实现Java比较器,以便可以按升序或降序排序?这里,我假设我不能将Scala排序特征与Java集合混合使用。另外,有没有人知道在Scala中是否/何时会有一个可变的TreeMap?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-04 04:44:27

您可以使用Ordering,并像这样定义ReverseOrder

代码语言:javascript
运行
复制
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]) 
票数 6
EN

Stack Overflow用户

发布于 2011-02-19 08:54:37

Scala特征Ordering扩展了Comparator接口,因此您可以简明扼要地完成此操作:

代码语言:javascript
运行
复制
val treeMap = new java.util.TreeMap[Double, String](Ordering.Double.reverse)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4891340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档