自定义对象的树集

TreeSet of Custom Objects

我为我正在处理的项目创建了自定义对象 (KCtrSrv) 的 TreeSet,我正在尝试使用 .higher(KCtrSrv) 和 .lower(KCtrSrv)。因此,将传入一个 KCtrSrv 对象,以与 TreeSet 中已有的其他 KCtrSrv 对象进行比较。我希望能够隔离它只看中心场,这可能吗?

**我的树包含三个对象,中心分别为 0.666、2.0、3.333,目前当我执行 tree.higher(newRequest) 时,它 returns 3.333。 newRequest 的值为 center = 0 和 serverPosition = 0。它应该返回 0.666。

我不是 100% 肯定 .higher() 和 .lower() 是如何操作的,我已经尝试查看 JavaDocs,但它并没有多大帮助。我还考虑过为 TreeSet 制作一个 class 并覆盖 .higher() 和 .lower(),但是我不太确定从哪里开始比较。

如有任何帮助,我们将不胜感激!

我的对象:

class KCtrSrv 实现 Comparable {

    private double center;
    private double serverPosition;

    public KCtrSrv(double center, double serverPosition) {

        this.center = center;
        this.serverPosition = serverPosition;
    }

    private void setServerPosition(double position) {
        this.serverPosition = position;
    }

    private double getServerPosition() {
        return this.serverPosition;
    }

    private double getCenter() {
        return this.center;
    }

   public  int compareTo(KCtrSrv x) {
        return (int) Math.abs(this.serverPosition - x.center);
    }

}

要使树集仅基于中心进行比较,您可以这样编写比较方法:

public int compareTo(KCtrSrv x) {
    return Double.compare(this.center, x.center);
}

旁注,当 a 为 "less than" b 时,a.compareTo(b) 应该是 return 负数。我看不出使用 Math.abs 的实现如何工作