COMPARABLE - 如何查看对象中的元素是否相等?

我开发了一个程序,我将一些元素放入 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……我需要一个方法来实现,看看元素是否相等,然后打印结果。


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;

    }


}


三国纷争
浏览 135回答 2
2回答

斯蒂芬大帝

记住Comparable是为了用于确定物品之间的关系以进行订购;这并不完全是为了平等。事实上,没有要求任何两个可比较的项目必须相等。在您的情况下,您可能希望按 订购NumeroParte,这意味着“零件编号”,这似乎是一个明智的选择。每种类型的数据都有不同的组织方式。你的方法可能看起来像public int compareTo(ComprarListas o){&nbsp; &nbsp; return this.NumeroParte - o.getNumeroParte();}之所以有效,是因为两者都是整数。或者您的对象的适当属性 - 例如,您可能希望根据价格进行订购。

慕丝7291255

如果你想知道一个对象是否等于另一个对象,你必须实现 equals 方法(它不需要你声明任何接口,每个类都可以做到)@Overridepublic boolean equals(Object o) {&nbsp; &nbsp; CompararListas other = (CompararListas) o;&nbsp; &nbsp; return ...&nbsp;&nbsp;}使用此方法,您可以返回使两个对象等于您的内容,如果您只需要查找referencia.equals(other.referencia)或必须比较每个属性,例如referencia.equals(other.referencia) && monto == other.monto && ...但是,如果您想比较元素以执行诸如对它们进行排序之类的操作,则必须实现 Comparable 接口并实现 compareTo 方法@Overridepublic int compareTo(CompararListas o) {&nbsp; &nbsp; if (NumeroParte < o.NumeroParte)&nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; else if (NumeroParte > o.NumeroParte)&nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; return 0;}这将使对象能够相互比较,例如根据您的标准知道一个对象是否比另一个“小”(在本例中,我只使用了 NumeroParte 并明确表示易于理解,但关键是您可以使用您想要比较对象的任何标准,如果您想稍后订购它们)。这些是针对不同问题的解决方案,您必须确定哪个更适合您的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java