Ordenar uma lista por dois campos

Bom dia pessoal

Estou precisando ordenar uma lista, só que a ordenação tem que ser feita através de 2 campos.

O Objeto tem 2 campos um é uma string e o outro é uma ligação à própria classe.

public class Grupo implements Comparable<Grupo> {
    private String descricao;
    private Grupo grupo;

    //gets e sets

    @Override
    public int compareTo(Grupo o) {
        return (descricao != null ? descricao.compareTo(o.descricao) : 0);
    }
}

o código acima mostra que a comparação é feita pela descrição… o problema que eu preciso que a ordenação seja feita assim:

Grupo A
Subgrupo A
Subgrupo A2
Grupo B
Subgrupo B

alguém pode me ajudar?

oLa, imagino que voce tenha que incluir em seu compareTo() uma condicao para ordenacao do subgrupo, algo como:

public class Grupo implements Comparable<Grupo> {   
    private String descricao;   
    private Grupo grupo;   
  
    //gets e sets   
  
    @Override   
    public int compareTo(Grupo o) {   
        int compare=0;
        if(o != null && o.descricao != null){
          if(o.grupo.descricao != null)//incluindo uma condicao para a comparacao do subgrupo
            compare = descricao.compareTo(o.descricao+o.grupo.descricao);//comparando grupo e subgrupo
          else 
            compare = descricao.compareTo(o.descricao);//caso nao tenha comparacao para o subgrupo
        }
        return compare;
    }   
}  

Ate mais!

Cara muito boa a sua idéia!!!

eu so alterei uma coisa, eu invertir a string, colocando a descricação do grupo antes do subgrupo:

@Override public int compareTo(Grupo o) { String compStr = (o.grupo != null ? o.grupo.descricao : "") + o.descricao; return (descricao != null ? descricao.compareTo(compStr) : 0); }

mas deu certinho valeu

Um ultimo comentario, voce tera problemas com java.langNUllPointerException quando fizer o.descricao! Acho legal voce tratar esse caso.

ate

Valeu … vou controlar isso ai…

obrigado