Implementacao de Equals e LinkedHashMap, Esse erro é dos bons!

3 respostas
Thiago_Senna

Olá Guj's!"

Estou com um erro esquisito. Já tentei resolver, mas naum estou enchergando alterantiva alguma para corrigi-lo!

Tenho um teste que tenta inserir um objeto do tipo cnpj duplicado dentro de uma coleção do tipo LinkedHahsMap. No entanto, apesar de ser objetos iguais, o linkedHashMap está permitindo a duplicação. Até onde verifiquei, o método equals do cnpj não contém erros, por isso que estou achando este erro esquisito e difícil de resolver.Vou postar o código para que vcs vejam!

Observação: Na minha classe de teste eu também testei o método equals, e o teste passou com sucesso!

public class Cnpj {
	
	//atributos
	private String cnpj;
	
	//construtores
	public Cnpj(){		
	}
	/**
	 * @param cnpj
	 */
	public Cnpj(String cnpj) {
		super();
		this.cnpj = cnpj;
	}
	
	//metodos de acesso
	/**
	 * @return Returns the cnpj.
	 */
	public String getCnpj() {
		return cnpj;
	}
	/**
	 * @param cnpj The cnpj to set.
	 */
	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

        public boolean equals(Object obj) {			
		if (this == obj) return true;
		
		if (obj instanceof Cnpj) {
			Cnpj cnpj = (Cnpj)obj;
			if (this.cnpj.equals(cnpj.cnpj)) return true;
		}
		
		return false;
	}
	
	public String toString() {		
		return cnpj;
	}
}

Aqui está o teste que fiz no Junit

public void testDuplicaCnpjEmColecaoSet() {
	    Set set = new LinkedHashSet();
	    set.add(new Cnpj("0"));
	    set.add(new Cnpj("0"));
	    assertEquals(1, set.size());
	}

Desde já agradeço!
Thiago Senna

3 Respostas

Rafael_Steil

Cade o hashCode()? :wink:

Rafael

pcalcado

1 - não acesse atributos privados diretamente, e se você recebesse uma classe filha no seu equals que não usasse cnpj.cpnj?

2 - Sobrescreva hashcode

Thiago_Senna

Valeu Rafael e Shoes!!

Agente implementou o HashCode, o teste passou, ai olhei aqui no fórum e lá estava as respostas! Tava entrando no fórum já para postar a resposta…hihi

:smiley: :smiley:

Quanto ao acesso direto:

Deixa comigo, vou fazer essas alterações… e obrigado de novo!

[desabafo]
Putz, que errinho do caramba… perdi mais de uma hora nesse erro… :lol:
[/desabafo]

Criado 9 de julho de 2005
Ultima resposta 9 de jul. de 2005
Respostas 3
Participantes 3