我正在为特定类编写可比较接口的compareTo
方法。我需要采用两个不同的字符串并比较它们,看看是否有一个比另一个更有价值。我通常会使用.compareTo()
,但在这种情况下,它会给我一个错误而不能正常工作。
这就是我所拥有的:
public int compareTo(Object o) {
if (name < ((AccountOwnerComparable) o).name)
return -1;
else if (name > ((AccountOwnerComparable) o).name)
return 1;
else
return 0;
}
我知道我无法使用< or >
,但这只是为了展示这种情况。
答案 0 :(得分:1)
你必须这样做:
name.compareTo(String_to_be_compare);
public int compareTo(Object o)
将此String与另一个Object进行比较。如果Object是String, 此函数的行为类似于compareTo(String)。
请注意:
<强>返回强>:
值0 如果参数是字符串字典相等到 这个字符串;如果参数是字符串,则值小于0 按字典顺序显示比此字符串更强;和值大于0 如果参数是字符串按字典顺序比此字符串少。 (source)
那么你的情况:
public int compareTo(Object o)
{
AccountOwnerComparable obj = (AccountOwnerComparable) o;
return obj.name.compareTo(this.name);
}
tw:实现类似的接口,指定你要比较的内容(通常是相同的类型),因为你没有指定你的接口与任何奇数的东西相比较的任何东西。
答案 1 :(得分:1)
Comparable
界面是通用。你的类声明应该看起来像这样:
class AccountOwnerComparable implements Comparable<AccountOwnerComparable> {...
注意AccountOwnerComparable
类型参数。有了这个,你就有了
public int compareTo(AccountOwnerComparable other) {
return name.compareTo(other.name);
}
答案 2 :(得分:1)
您在投射时可能错过了一个支架或某物。请尝试以下代码。
public int compareTo(Object o) {
if (name.compareTo(((AccountOwnerComparable) o).name) > 0) {
System.out.println("Greater");
return -1;
} else if (name.compareTo(((AccountOwnerComparable) o).name) < 0) {
System.out.println("Lesser");
return 1;
} else {
System.out.println("Equal");
return 0;
}
}
答案 3 :(得分:0)
使用Integer.parseInt()
方法。通过这种方式,您可以使用>
或<
,而且更加详细。
我假设您要比较包含数字的两个String
对象。虽然你没有在问题中写出来,但标题是这样说的。