Ordenar um HashSet

11 respostas
A

Bom dia Galera …

Putz … Estou enrolado no seguinte problema.

  • Tenho uma variavel Set:
    Set var = new HashSet();

  • E nela eu populo com uma classe Fornecedor, que esses Fornecedores vem de um List que é retornado do getList do Hibernate, e vem ordenado.
    var.add( fornecedor ); <-- Varios.

O Problema é que quando eu populo essa ‘var’ (HashSet) a ordem é toda perdida, mas eu preciso que essa ‘var’ tivesse Ordenada.

:arrow: Como fazer isso ??? Podem me ajudar … Please !!!

Muito Obrigado. :smiley:

11 Respostas

Daniel_Quirino_Olive

Faça a sua classe Fornecedor implementar a interface java.lang.Comparable.

cv1

…ou implemente um Comparator, e passe pro HashSet se divertir :smiley:

A

Então …

Implementei a Interface Comparetor e criei o Método compare.

public class Fornecedor implements Comparator {

    private Short             codigo;
    private String            nomeFantasia;

    public int compare(Object o1, Object o2) {
        return ((Fornecedor)o1).getNomeFantasia().compareTo(((Fornecedor)o2).getNomeFantasia());
    }

    ....

:arrow: Mas agora, Como que eu dou um Sort na ‘var’ (Que é um HashSet) ???

_fs

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html

:wink:

A

Ja vi a API do Collections mas mesmo assim não estou conseguido oredenar minha variavel HashSet. :oops:

Pode me dar um exemplo ??? Por favor !!!

:smiley:

louds

Peeeeeee.

HashSet não tem ordem. Ou melhor, a ordem de um HashSet não possui relação com a ordem natural, imposta ou cronologica dos objetos contidos.

Se voce quer ordem de inserção use um LinkedHashSet, ou ordem natural/imposta um TreeSet.

A

Muito Obrigado Galera … A idéia do Louds deu certinho …

Obrigado a todos (Daniel Quirino, CV, LIPE, Louds).

:smiley:

:stuck_out_tongue: FELIZ NATAL !!! :slight_smile:

_fs

HashSets não são ordenáveis. Ele nem garante que a ordem de inserção será mantida quando um objeto Iterator for pedido.

Aqui tem algumas alternativas:
http://www.mainframeforum.com/t466220.html

Aqui tem mais coisas sobre o assunto:
http://www.scs.carleton.ca/~lalonde/105WebPage/Notes/105Notes12.html

Mas … você PRECISA usar um hashset?

A

Lipe.

Não, eu não sou obrigado a usar um HashSet. Utilizei o LinkedHashSet e funcionou muito bem.

Mas por que pergunta se eu PRECISO usar o HashSet ???

Obrigado pela Atenção hein !!! :smiley:

Daniel_Quirino_Olive

louds:
Peeeeeee.

HashSet não tem ordem. Ou melhor, a ordem de um HashSet não possui relação com a ordem natural, imposta ou cronologica dos objetos contidos.

Se voce quer ordem de inserção use um LinkedHashSet, ou ordem natural/imposta um TreeSet.

Ahhh é. Bem lembrado. Shame on you, Dani!

_fs

ops, nem tinha visto o reply do louds, foi mal :smiley:

Porque caso contrário poderia usar as outras implementações de Set. Como você já fez hehe

Criado 16 de dezembro de 2004
Ultima resposta 16 de dez. de 2004
Respostas 11
Participantes 5