【发布时间】:2011-08-23 19:34:14
【问题描述】:
我正在尝试读取公司向量,如果两家公司名称相同,则返回 true,否则返回 false 我使用 ComapareTo 方法完成的。在我的方法中,它将调用 Company 类中的“equals”方法。我的“equals”方法必须覆盖 Object 类中的相应方法。
我想知道的是是否可以使用 Equal 方法覆盖 CompareTo。如果是这样,我该如何在 main 中检查它。
该程序的目标是检查向量中的 2 家公司,如果是则返回 true,否则返回 false。这是我在 main 中测试它的代码。
public class Company implements Comparable <Company> {
/**
* @param args
*/
private String cName;
public String getName()
{
return cName;
}
public int compareTo(Company b)
{
if(this.cName == b.cName)
{
System.out.println(" from compareTo true");
return 1;
}
else
{
System.out.println(" from compareTo false");
return 0;
}
}
public boolean equal(Object o)
{
if (o instanceof Company)
{
Company c = (Company) o;
if(this.cName.equals(c.cName))
{
System.out.println(" from equal true");
return true;
}
}
System.out.println(" from equal false");
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<String> v = new Vector<String>();
Company obj1 = new Company();
Company obj2 = new Company();
v.add("Rio tinto");
v.add("BHP");
v.add("BHP");
v.add("CBA");
Collections.sort(v);
System.out.println(v);
}
代码有点纠结,请原谅我只是在尝试不同的方法。
【问题讨论】:
-
您似乎误解了
compareTo()的工作原理。如果两个对象相等,则应返回0。 -
除了其他不好的事情之外,您正在使用
==比较两个字符串。在正常情况下这是错误的,您的示例可能符合“正常情况”。
标签: java