The result of the object comparison is done using the methods hashCode()
and equals()
, of class Object
. So to make the comparison your way you should overwrite those methods in your Produto
class.
Creating a Product class to my liking (since you did not say the attribute names), it would look something like this:
Product
public class Produto {
int idProduto;
String nomeProduto;
//getters and setters
@Override
public int hashCode() {
//deve ser o mesmo resultado para um mesmo objeto, não pode ser aleatório
return this.idProduto;
}
@Override
public boolean equals(Object obj) {
//se nao forem objetos da mesma classe sao objetos diferentes
if(!(obj instanceof Produto)) return false;
//se forem o mesmo objeto, retorna true
if(obj == this) return true;
// aqui o cast é seguro por causa do teste feito acima
Produto produto = (Produto) obj;
//aqui você compara a seu gosto, o ideal é comparar atributo por atributo
return this.idProduto == produto.getIdProduto() &&
this.nomeProduto.equals(produto.getNomeProduto());
}
}
The hashCode
method is used to streamline the search in Collections , and should always return the same value for the same object, in the case above I preferred to make the method return the idProduto
because if the idProduto
is different nor then go to equals()
, because it will certainly return false.