Ordenar um HashSet

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:

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

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

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) ???

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

:wink:

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:

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.

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:

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?

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:

[quote=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.[/quote]

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

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