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
。然后我创建两个 Fatura
s。我将 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)
我有一个名为 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
。然后我创建两个 Fatura
s。我将 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)