如何在Rhino Java环境中使用比较器方法

时间:2017-11-13 20:21:34

标签: javascript java rhino

我正在尝试覆盖我的类的compareTo()方法,以便根据日期对实例进行排序。

当我运行此程序时,我得到的结果不正确。 我正在用Javascript编写,因为我在Rhino环境中工作。我不确定它是否有帮助,但我使用execute-rhino-online在线编辑器编写代码:

var arrayList = java.util.ArrayList();
var Object1 = new java.util.HashMap();
var Object2 = new java.util.HashMap();
var Object3 = new java.util.HashMap();
Object1.put("Job Number", "222");
Object1.put("Date", java.util.Date(2017, 10, 11));
Object2.put("Job Number", "333");
Object2.put("Date", java.util.Date(2017, 10, 13));
Object3.put("Job Number", "111");
Object3.put("Date", java.util.Date(2017, 10, 10));
arrayList.add(Object1);
arrayList.add(Object2);
arrayList.add(Object3);

var comp = java.util.Comparator({
  compareTo: function(o1, o2) {
    var d1 = o1.get("Date");
    print(d1);
    var d2 = o2.get("Date");
    if (d1.before(d2)) {
      return -1;
    } else if (d1.after(d2)) {
      return 1;
    } else {
      return 0;
    }
  }
});
java.util.Collections.sort(arrayList, comp);
print(arrayList);

1 个答案:

答案 0 :(得分:1)

这是因为你要覆盖一个不存在的方法

compareTo:更改为compare:

检查https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

的javadoc