Bom, a “identidade” de um objeto pode ser definida através dos valores de seus atributos.
Por exemplo, imagine uma classe Pessoa com vários atributos.
Você pode definir um atributo id que identifica unicamente cada instância da classe Pessoa. Com esse id, você pode sobrescrever o método equals que te pertimirá saber quando uma pessoa é igual a outra.
publicclassPessoa{privateIntegerid;privateStringnome;..........// sobrescrevendo o equals usando o atributo id@Overridepublicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null)returnfalse;if(getClass()!=obj.getClass())returnfalse;Pessoaother=(Pessoa)obj;if(id==null){if(other.id!=null)returnfalse;}elseif(!id.equals(other.id))returnfalse;returntrue;}}