Java boolean equals使用ArrayLists的方法

时间:2016-11-10 03:10:42

标签: java arraylist equals

我有一个名为Produto的班级和一个名为Fatura的班级,最后一个班级有private long nifprivate ArrayList<Produto> lista = new ArrayList<Produto>();

我的equals()方法:

public boolean equals (Object o) {
    if (o != null && this.getClass() == o.getClass()) {
        Fatura f = (Fatura) o;
        return (this.nif == f.nif && f.lista.equals(o));
    }
    return false;
}

在我的Main_test上,我创建了三个Produto。然后我创建两个Fatura。我将Produto添加到ArrayList,然后将fatura1设置为fatura2

fatura1 = fatura2;

然后我调用equals()方法查看fatura1是否等于fatura2,但它返回false我不知道为什么。它应该返回true因为它们是相同的,它们具有相同的nif和相同的ArrayList

由于

2 个答案:

答案 0 :(得分:0)

您的结果是错误的,因为 lista ArrayList 对象,而 o 对象。您需要将您的alist提取到像 Futura

这样的对象中

以下是一个示例:

你应该这样写:

return (this.nif == f.nif && f.lista.get(0).equals(o));

而不是:

return (this.nif == f.nif && f.lista.equals(o));

您正在将ArrayList与Object类进行比较,这导致您得到&#34; false&#34;作为你的结果。

答案 1 :(得分:0)

我认为问题在于:

f.lista.equals(o)

您没有将正确的参数传递给equals。这样做:

f.lista.equals(this.lista)