hashSet e hashMap !=

5 respostas
LPJava

ae pessoal qual eh a diferença exata de usar u m hashSet e o hashMap ja que os dois nao sao ordenados e tb nao sao classificados… quando saber usar um ou outro?

5 Respostas

Rodrigo_Carvalho_Aul

É só você ver a diferença entre as interfaces Set (que o HashSet implementa) e Map (que o HashMap implementa).

[]'s

Rodrigo Auler

T

Set = Conjunto (ou seja, você só tem valores.)

Exemplo: você pode fazer um Set dos Estados do Brasil.

Map = Mapa (ou seja, você tem pares "valor -&gt chave")

Exemplo: você pode associar a cada nome um Estado.

Ironlynx

Esse aqui do JF também ajuda:
http://www.javafree.org/content/view.jf?idContent=11

LPJava

po valeu! deu para dar uma clareada!!

Luiz_Henrique_Coura

Set tb procura manter uma coleção de objetos sem repetição baseado nos métodos hashcode e equals do seu objeto. Hibernate, por exemplo, usa muito essa característica dessa coleção.

Imagine a classe Pessoa abaixo com os métodos hashcode e equals implementados de tal forma q se dois objetos Pessoa tiverem o mesmo nome, eles são dados como iguais.

public class Pessoa {
    
    private String nome;
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public boolean equals(Object object) {
    	if (object == null) return false;
      	if (this == object) return true;      
        
        boolean result = false;
        
        if (object instanceof Pessoa) {
            Pessoa teste= (Pessoa) object;
            result = this.getNome() != null && 
                     this.getNome().equals(teste.getNome());
        }
        return result;
    }

    public int hashCode() {
        return this.getNome() != null ? this.getNome().hashCode() : 67;
    }
    
    public String toString() {
        return this.getNome();
    }
    
}
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Main {
    
    public static void main(String[] args) {
        
       Pessoa a = new Pessoa(); 
       a.setNome( "Pedro" );
       
       Pessoa b = new Pessoa(); 
       b.setNome( "Pedro" );
       
       Set set = new HashSet();
       set.add( a );
       set.add( b );
       
       for( Iterator iterator = set.iterator() ; iterator.hasNext() ;  ) {
           System.out.println( iterator.next() );
       }
        
    }
    
}

No Set será armazenado somente um objeto, pois eles são dados como iguais, tem o mesmo valor em seus atributos, ou seja, tem o mesmo nome.

Advinha qual o resultado do código!!?

Criado 16 de fevereiro de 2007
Ultima resposta 16 de fev. de 2007
Respostas 5
Participantes 5