2 回答
TA贡献1827条经验 获得超8个赞
记住Comparable是为了用于确定物品之间的关系以进行订购;这并不完全是为了平等。事实上,没有要求任何两个可比较的项目必须相等。
在您的情况下,您可能希望按 订购NumeroParte,这意味着“零件编号”,这似乎是一个明智的选择。每种类型的数据都有不同的组织方式。
你的方法可能看起来像
public int compareTo(ComprarListas o){
return this.NumeroParte - o.getNumeroParte();
}
之所以有效,是因为两者都是整数。
或者您的对象的适当属性 - 例如,您可能希望根据价格进行订购。
TA贡献1859条经验 获得超6个赞
如果你想知道一个对象是否等于另一个对象,你必须实现 equals 方法(它不需要你声明任何接口,每个类都可以做到)
@Override
public boolean equals(Object o) {
CompararListas other = (CompararListas) o;
return ...
}
使用此方法,您可以返回使两个对象等于您的内容,如果您只需要查找referencia.equals(other.referencia)或必须比较每个属性,例如referencia.equals(other.referencia) && monto == other.monto && ...
但是,如果您想比较元素以执行诸如对它们进行排序之类的操作,则必须实现 Comparable 接口并实现 compareTo 方法
@Override
public int compareTo(CompararListas o) {
if (NumeroParte < o.NumeroParte)
return -1;
else if (NumeroParte > o.NumeroParte)
return 1;
return 0;
}
这将使对象能够相互比较,例如根据您的标准知道一个对象是否比另一个“小”(在本例中,我只使用了 NumeroParte 并明确表示易于理解,但关键是您可以使用您想要比较对象的任何标准,如果您想稍后订购它们)。
这些是针对不同问题的解决方案,您必须确定哪个更适合您的情况。
添加回答
举报