我想创建一类对象来相互比较,而不使用值来比较它们。Java中是否有能够为我提供此功能的库?在排序方面,最常提到的库是 Comparator,但到目前为止我看到的所有示例都使用对象中的某些值来执行排序。
例如,我希望能够在一类对象中说:
对象 A 比对象 B 更重要。对象 B 比对象 C 更重要。
因此,我希望图书馆能够进行某种分析,并能够根据这些值对项目进行排序,并对我说,上述值的顺序是 A、B、C,因为命令。
是否有能够在 Java 中执行此操作的库?
我想创建一类对象来相互比较,而不使用值来比较它们。Java中是否有能够为我提供此功能的库?在排序方面,最常提到的库是 Comparator,但到目前为止我看到的所有示例都使用对象中的某些值来执行排序。
例如,我希望能够在一类对象中说:
对象 A 比对象 B 更重要。对象 B 比对象 C 更重要。
因此,我希望图书馆能够进行某种分析,并能够根据这些值对项目进行排序,并对我说,上述值的顺序是 A、B、C,因为命令。
是否有能够在 Java 中执行此操作的库?
你在想这样的事情吗?
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;
}
}