使用CompareTo比较数组中的字符串和double值?

时间:2017-10-21 01:14:32

标签: java arrays sorting

我有一个赋值,使用插入排序和选择排序对输入值数组进行排序。我在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;
}

1 个答案:

答案 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;
}