如何在一个类中生成 2 个可比较的方法?
2022-09-01 12:34:51
我有一个类,我已经按一个属性对它进行了排序。现在我需要做另一件事,我需要创建另一种方法来对我的数据进行排序。我该如何做到这一点,所以我可以在两种方法之间进行选择。我知道的唯一命令是 Collections.sort,它将从我要比较其数据的类中获取方法 compareTo。
这有可能吗?
我有一个类,我已经按一个属性对它进行了排序。现在我需要做另一件事,我需要创建另一种方法来对我的数据进行排序。我该如何做到这一点,所以我可以在两种方法之间进行选择。我知道的唯一命令是 Collections.sort,它将从我要比较其数据的类中获取方法 compareTo。
这有可能吗?
您需要做的是实现自定义比较器
。然后使用:
Collections.sort(yourList, new CustomComparator<YourClass>());
具体来说,您可以编写:(这将创建一个实现 的匿名类。Comparator
Collections.sort(yourList, new Comparator<YourClass>(){
public int compare(YourClass one, YourClass two) {
// compare using whichever properties of ListType you need
}
});
如果您愿意,可以将这些构建到您的类中:
class YourClass {
static Comparator<YourClass> getAttribute1Comparator() {
return new Comparator<YourClass>() {
// compare using attribute 1
};
}
static Comparator<YourClass> getAttribute2Comparator() {
return new Comparator<YourClass>() {
// compare using attribute 2
};
}
}
它可以这样使用:
Collections.sort(yourList, YourClass.getAttribute2Comparator());
类中只能有一个方法。compareTo()
如果要以多种方式对同一类进行排序,请创建实现。Comparator