我有一个赋值,使用插入排序和选择排序对输入值数组进行排序。我在compareTo
类中覆盖Item
方法时遇到了一些麻烦。我想对它进行排序,以便如果两个项目的价格相同,则根据Category
进行比较。所以Child(C)项目首先出现,然后是M.然后是Women。这是我的代码,每次我尝试编译它时都会收到一条错误消息,指出double
无法引用。
public int compareTo (Object other) {
int result;
double otherPrice = ((Item)other).getClothPrice();
String otherCategory = ((Item)other).getClothCategory();
if (clothPrice == otherPrice)
result = clothCategory.compareTo(otherCategory);
else
result = clothPrice.compareTo(otherPrice);
return result;
}
答案 0 :(得分:7)
首先,您的compareTo
方法应该以{{1}}作为参数。如果这会导致编译器错误,请确保Item
正在实施Item
。
要比较原始Comparable<Item>
值,请使用Double.compare
:
double
如果你正在使用Java 8,你可能更喜欢使用Comparator
的一些更高级的功能,这使得扩展这段代码变得更加简单:
public int compareTo(Item other) {
int result = Double.compare(clothPrice, other.clothPrice);
if (result == 0) {
result = clothCategory.compareTo(other.clothCategory);
}
return result;
}