Ordenar java.util.list Multidimensional

2 respostas
W
Ola a todos,

estou aprendendo a programar em java, e até o momento me deparei com a dificil tarefa de ordenar um List Multidimensional, o codigo segue abaixo:

package cci;

import java.util.*;
public class JanPri{

public static void main(String[] args) {

Lista();

}
public static void Lista() {
    List<Integer> Ordem = new ArrayList<Integer>();
    List<String> Coluna = new ArrayList<String>();
    List<Boolean> Obrigatorio = new ArrayList<Boolean>();
    List<List> Config = new ArrayList<List>();  

    Ordem.add(1);
    Ordem.add(0);
    
    Coluna.add("um");         
    Coluna.add("zero");
    
    Obrigatorio.add(true);
    Obrigatorio.add(false);

    Config.add(Ordem);
    Config.add(Coluna);
    Config.add(Obrigatorio);
    
    Collections.sort(Config.get(0));
    System.out.println(Config.get(0).get(0) + " " + Config.get(1).get(0) + " " + Config.get(2).get(0));
}

}

Teoricamente teria que me retornar:
0 zero false
mas esta retornando
0 um true
Ou seja ela ordena apenas a coluna que indiquei ignorando as demais
teria que ficar assim
0 zero false
1 um true

Grato a quem ajudar

2 Respostas

BrunoBastosPJ

As listas que você quer ordenar não estão com nenhuma interdependencia umas com as outras, então seu método sort ordena apenas o primeiro List (get(0)) que você está chamando.

O ideal seria criar objetos que tenham os campos ordem, coluna e obrigatorio, e adicionar esses objetos em uma Lista, sem a necessidade de uma lista bidimencional.

Caso decida fazer isto, você também precisa implementar a interface Comparable na classe que foi criada. Se você quiser ordenas os objetos pelo campo inteiro ordem não será muito complicado.

Abs

W
bom, não sei se este é o melhor jeito de se fazer isto em java, mas para que quizer saber como ficou, aqui vai o código:

import java.util.*;

import javax.swing.table.DefaultTableModel;

public class meuteste {

public static void main(String[] args) {

final Vector CamposConfig = new Vector();

Vector ColunasConfig = new Vector();

Vector LinhasConfig = new Vector();

Vector LinhasConfig2 = new Vector();

ColunasConfig.add(Ordem);

ColunasConfig.add(Coluna);

ColunasConfig.add(Obrigatorio);
LinhasConfig.add("1");
    LinhasConfig.add("um");
    LinhasConfig.add("true");
    CamposConfig.add(LinhasConfig);

    LinhasConfig2.add("0");
    LinhasConfig2.add("zero");
    LinhasConfig2.add("false");
    CamposConfig.add(LinhasConfig2);

    Collections.sort(CamposConfig, new Comparator() {
        public int compare(Object o1, Object o2) {
            Vector v1 = (Vector) o1;
            Vector v2 = (Vector) o2;
            Comparable c1 = (Comparable) v1.get(0);
            Comparable c2 = (Comparable) v2.get(0);
            return c1.compareTo(c2);
        }
    });
    DefaultTableModel Config = new DefaultTableModel(CamposConfig, ColunasConfig);    
    System.out.println(Config.getValueAt(0,0).toString() + " " + Config.getValueAt(0,1).toString() + " " + Config.getValueAt(0,2).toString());
}

}

Criado 14 de junho de 2008
Ultima resposta 17 de jun. de 2008
Respostas 2
Participantes 2