gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:19:01 25 4
gpt4 key购买 nike

我被分配使用插入排序和选择排序对输入值数组进行排序。我在使用 Item 类中覆盖 compareTo 方法时遇到一些问题。我希望它能够进行排序,以便如果两个商品的价格相同,那么它会根据类别进行比较。因此, child (C) 项目首先出现,然后是 M,然后是女性。这是我的代码,每次尝试编译它时,我都会收到一条错误,指出无法引用 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;
}

最佳答案

首先,你的compareTo方法应该采用 Item作为参数。如果这导致编译器错误,请确保 Item正在实现Comparable<Item> .

比较原语 double值,使用 Double.compare :

public int compareTo(Item other) {
int result = Double.compare(clothPrice, other.clothPrice);
if (result == 0) {
result = clothCategory.compareTo(other.clothCategory);
}
return result;
}

如果您使用 Java 8,您可能更喜欢使用 Comparator 的一些更高级的功能。这使得扩展此代码变得更加简单:

private static final Comparator<Item> naturalOrdering = Comparator
.comparingDouble(Item::getClothPrice)
.thenComparing(Item::getClothCategory);

public int compareTo(Item other) {
return naturalOrdering.compare(this, other);
}

关于java - 使用 CompareTo 比较数组中的字符串和 double 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com