Java ArrayLists 的布尔等于方法

Java boolean equals method with ArrayLists

我有一个名为 Produto 的 Class 和一个名为 Fatura 的 Class,最后一个有一个 private long nif 和一个 private 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。然后我创建两个 Faturas。我将 Produto 添加到 ArrayList 并将 fatura1 设置为 fatura2:

fatura1 = fatura2;

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

谢谢

你的结果是错误的,因为 lista 是一个 ArrayList 对象,而你的 o 是一个对象。您需要将您的列表提取到 Futura

这样的对象中

这是一个示例:

你应该这样写:

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

而不是这个:

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

您正在将 ArrayList 与对象 class 进行比较,这导致您得到 "false" 作为结果。

我认为问题出在这里:

f.lista.equals(o)

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

f.lista.equals(this.lista)