Metodo contains(Object o)

2 respostas
_

Pessoal, estou com o seguinte problema:

File file = new File(meu arquivo.txt);

List lista = new LinkedList();

lista.add(file);

Crio um arquivo e adiciono a uma List, porem se eu usar

lista.contains(new File(“meu arquivo.txt”));

ou

lista.contains(file);

o resultado eh FALSE, mesmo eu imprimindo o conteudo da lista e sabendo que esta arquivo esta incluido nela.

Gostaria que alguem me explicasse o que esta acontecendo.

Valeu()

2 Respostas

M

vc precisa implementar o método equals() e hashCode() pra se trabalhar com collections! no caso, pra dizer qnd dois objetos são considerados iguais, e claro, qnd vc da new() na hr de pesquisar, ele nunca será igual, pq a classe File nao implementa o equals(), ela herda o equals() de Object, cujo retorno só será true se as duas referencias estiverem apontando pro mesmo objeto

_

Beleza, esclareceu mesmo o problema, mas se eu fizer:

File file1 = new File(“meuarquivo.txt”);
lista.add(file1);

lista.contains(file1);

tambem da false, e aqui esta referenciando o mesmo objeto!
Mas e entao, o que eu devo fazer? Criar uma classe MeuFile extend File que implementa o equals e hasCode?

Obrigado Mesmo!

()

Criado 13 de novembro de 2004
Ultima resposta 14 de nov. de 2004
Respostas 2
Participantes 2