【发布时间】:2019-09-15 07:33:58
【问题描述】:
我正在使用compareTo() 方法对名为image 的自定义对象的ArrayList 进行排序,但在我的应用程序中,有时我需要根据goodMatches 等特定属性对数组进行排序,以及其他有时我需要根据对象的另一个属性或属性对数组进行排序,但对于不同的排序,我不能多次覆盖 compareTo() 方法。
我已经尝试对 Object 使用 flags 属性,但问题是其他属性是浮点类型,我需要保留方法 compareTo 以将浮点而不是整数作为 goodMatches 返回。任何人都可以帮助我克服这个问题而无需创建另一个对象类,任何帮助将不胜感激,下面是我的compareTo()代码:
@Override
public int compareTo(image compareImg) {
int compareMatches=((image)compareImg).getGoodMatches();
return compareMatches - this.goodMatches;
}
【问题讨论】:
-
您需要创建自定义比较器
-
你能澄清一下这个说法吗:“对于不同的种类,我不能多次重写 compareTo() 方法”?我假设您从代码中的不同位置调用
sort,那么您不能为每个用例定义不同的Comparators 吗? -
@Sindbad90 compareTo 在使用“实现 Comparable”时已经实现,例如我的情况:公共类图像实现 Comparable
{},所以我不能为其他排序类型编写第二个或第三个 compareTo跨度>
标签: java android sorting arraylist