[resolvido]Uso do ArrayList

boa tarde galera da força…
gostaria de saber melhor o uso do contains

segue exemplo

package compara;

import java.util.ArrayList;

public class TesteContains {
	public static void main(String...args){
		ArrayList<Pessoa> lista = new ArrayList<Pessoa>();
		Pessoa p1 = new Pessoa();
		Pessoa p2 = new Pessoa();
		Pessoa p3 = new Pessoa();
		Pessoa p4 = new Pessoa();
		Pessoa p5 = new Pessoa();
		
		p1.setNome("Teste");
		p1.setEndereco("casa");
		p1.setTelefone("1");
		
		p2.setNome("Teste1");
		p2.setEndereco("casa1");
		p2.setTelefone("12");
		
		p3.setNome("Teste2");
		p3.setEndereco("casa2");
		p3.setTelefone("13");
		
		p4.setNome("Teste");
		p4.setEndereco("casa");
		p4.setTelefone("1121212");
		
		lista.add(p1);
		lista.add(p2);
		lista.add(p3);
		
		System.out.println(lista.contains(p4));
	}
}

nesse caso o p4 é igual ao p1…mas sao objetos diferentes…blz…logo ele retorna false…mas eu quero saber como fazer esse cara me retornar true!
tenho que sobrescrever o metodo equals na minha classe pessoa? se sim…ja fiz isso e nao deu certo…

funcionou com o metodo equals mesmo pessoa…foi mal ai pelo incomodo.

É necessário sobreescrever equals para que contains funcione corretamente. Um exemplo:

class Pessoa {
    String nome, endereco, telefone;
    public boolean equals (Object obj) {
        if (obj == null) return false;
        if (obj.getClass() != Pessoa.class) return false;
        Pessoa outro = (Pessoa) obj;
        return nome.equals (outro.nome) && 
                  endereco.equals (outro.endereco) &&
                  telefone.equals (outro.telefone);
    }
}

Note que a sobreescrita correta do método equals é “public boolean equals (Object)”, não “public boolean equals (Pessoa)”. OK?