Ordenar Array Multidimensional

3 respostas
K

Olá, preciso ordenar uma array de strings multidimensional de acordo com o desempenho de cada aluno de uma determinada classe de aula.

public String [][] getAlunosClasse(Classe classe)
   {

     
       
     try
     {
         
      List desempenhoClasse = new ArrayList();   
         
      Session ses = HibernateSessao.getSessao();
      Query query = ses.createQuery(    "from sistema.Aluno as alu "+
                                        " where alu.classes.idClasse                 = :idClasse  "
                                                                                                                            
                                    );
      
      query.setParameter("idClasse", new Integer(classe.getIdClasse()));
      
      
      List alunos = query.list();      
      
      
      String desempenho[][] = new String[alunos.size()][2];
      
      Iterator it = alunos.iterator();
      double total=0;
      int i=0, totalAlunos=0;
              
      while(it.hasNext())
      {
         Aluno aluno = (Aluno)  it.next();
         
         desempenho[totalAlunos][0] = aluno.getNome();
         desempenhoClasse.add(aluno.getNome());
         
         Iterator it2 = aluno.getExerciciosFeitos().iterator();
                  
         while(it2.hasNext())
         {
            ExercicioFeito ef = (ExercicioFeito)it2.next() ;
            
            Iterator it3 = ef.getClasseFeita().iterator();
              
            while(it3.hasNext())
            {
               
               ClasseFeita cf = (ClasseFeita) it3.next();
               total = total + cf.getAproveitamento();
                                                  
               i++;
                    
         }
               
   DecimalFormat dc = new DecimalFormat("0.##");
   desempenho[totalAlunos][1] = dc.format(total/i);
             

          
   }
          totalAlunos++;
                
      }
      
    return desempenho;
         
    }
    catch (Exception e)
    {
      e.printStackTrace();
      HibernateSessao.aborta();
      throw new HibernateException("Erro na consulta dos exercicios do aluno");
    }

   }
           
  
       }

A idéia é inserir o nome dos alunos de acordo com o desempenho, do maior para o menor.
Se alguém puder ajudar.
OBS: estou usando o hibernate, mas devido a metodologia utilizada para calcular o desempenho, não é possível ordenar através do framework
Obrigado

3 Respostas

GiancarloBraga

Já tentou utilizar a classe Arrays do pacote java.util?
java.util.Arrays.
Aí para arrumar isso você usa:
Arrays.sort(seuarray);

No seu caso ela é multidimensional, só que deve ter alguma maneira de contornar isso. Tente olhar a documentação dessa classe. Tem um monte de método sort e acho que de repente você acha sua resposta.

Abraços.

K

Já tentei amigo, todos os métodos são para Arrays unidimensionais.

GiancarloBraga

Faz uma gambiarra.
Manda cada linha do array multidimensional para um array unidimensional. Alinha eles e passa de novo para multdimensional.

Com certeza não deve ser a melhor solução, mas creio que a curto prazo funciona… heheeheh

Criado 30 de agosto de 2007
Ultima resposta 30 de ago. de 2007
Respostas 3
Participantes 2