-2

我想创建一类对象来相互比较,而不使用值来比较它们。Java中是否有能够为我提供此功能的库?在排序方面,最常提到的库是 Comparator,但到目前为止我看到的所有示例都使用对象中的某些值来执行排序。

例如,我希望能够在一类对象中说:

对象 A 比对象 B 更重要。对象 B 比对象 C 更重要。

因此,我希望图书馆能够进行某种分析,并能够根据这些值对项目进行排序,并对我说,上述值的顺序是 A、B、C,因为命令。

是否有能够在 Java 中执行此操作的库?

4

1 回答 1

0

你在想这样的事情吗?

enum Importance {

    High,
    Medium,
    Low;
}

class Thing implements Comparable<Thing> {

    private Importance importance = Importance.Medium;

    public Importance getImportance() {
        return importance;
    }

    public void setImportance(Importance importance) {
        this.importance = importance;
    }

    @Override
    public int compareTo(Thing o) {
        return importance.compareTo(o.importance);
    }

}

或者-如果您想控制每个对象的相对性,则将其记录在地图中。您需要小心严格控制地图以确保没有循环 - 如果有,那么您的排序将变得不稳定。

static Map<Thing, Set<Thing>> moreImportant = new HashMap<>();

class Thing implements Comparable<Thing> {

    @Override
    public int compareTo(Thing o) {
        Set<Thing> more = moreImportant.get(this);
        return more == null ? 0 : more.contains(o) ? 1 : -1;
    }

}
于 2015-04-07T14:45:22.890 回答