我正在开发一个程序,该程序将一些元素放入ArrayList的对象中……这是我的代码
import java.util.ArrayList;
public class ListaConcepto {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<CompararListas> Lista = new ArrayList<CompararListas>();
CompararListas obj1 = new CompararListas("abc", 12.25, "lala", 2);
CompararListas obj2 = new CompararListas("abc", 13.50, "lala", 3);
CompararListas obj3 = new CompararListas("poc", 12.50, "jaja", 1);
Lista.add(obj1);
Lista.add(obj2);
Lista.add(obj3);
}
}
然后...这是我的类,具有Comparable ...接口,并且我需要一种方法来实现以查看元素是否为EQUALS,然后打印结果。
public class CompararListas implements Comparable<CompararListas> {
private String referencia;
private double monto;
private String descripcion;
private double NumeroParte;
public CompararListas(String referencia, double monto, String descripcion, double numeroParte) {
this.referencia = referencia;
this.monto = monto;
this.descripcion = descripcion;
this.NumeroParte = numeroParte;
}
public double getMonto() {
return monto;
}
public void setMonto(double monto) {
this.monto = monto;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public double getNumeroParte() {
return NumeroParte;
}
public void setNumeroParte(double numeroParte) {
NumeroParte = numeroParte;
}
public String getReferencia() {
return referencia;
}
public void setReferencia(String referencia) {
this.referencia = referencia;
}
@Override
public int compareTo(CompararListas o) {
// TODO Auto-generated method stub
return 0;
}
}
答案 0 :(得分:1)
记住Comparable
是为了确定商品之间的关系以用于订购;平等不是相当。实际上,并没有要求两个可比较的项目必须相等。
在您的情况下,您可能想按NumeroParte
进行订购,这意味着“部件号”,这似乎是明智的选择。每种类型的数据都有不同的组织方式。
您的方法可能类似于
public int compareTo(ComprarListas o){
return this.NumeroParte - o.getNumeroParte();
}
之所以可行,是因为它们都是整数。
或对象的适当属性-例如,您可能想根据价格进行订购。
答案 1 :(得分:0)
如果您想知道一个对象是否等于另一个对象,则必须实现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并使其明确易懂,但是关键是您可以使用任何要比较对象的条件,以及以后要订购它们的条件。
这些是针对不同问题的解决方案,您必须确定哪种情况更好。