Italo:

Está meio ineficiente... (utilizei comparações de String e BubbleSort para
ordenação)...
Também não sei se seria a melhor maneira de implementar isso...
Mas acho que dá para você ter uma idéia:

Passe para o método static ordenaRegistro o array de Registros e uma String
dizendo qual parâmetro ordenar...

Segue:

************************************************************

public class Registro {
 int     cod;
 String  name;
 int     telefone;

 public Registro(int cod, String name, int telefone) {
  this.cod = cod;
  this.name = name;
  this.telefone = telefone;
 }

 public static void ordenaRegistro(Registro[] r, String param) {
  for (int i = 0; i < r.length; i++) {
   for (int j = 0; j < r.length - 1; j++) {
    try {
     String  s  = (String) r[j].getParam(param);
     if (s.compareTo(r[j + 1].getParam(param)) > 0) {
      Registro  hold  = r[j];
      r[j] = r[j + 1];
      r[j + 1] = hold;
     }

    }
    catch (java.lang.ClassCastException e) {
     Integer  k  = (Integer) r[j].getParam(param);
     if (k.compareTo(r[j + 1].getParam(param)) > 0) {
      Registro  hold  = r[j];
      r[j] = r[j + 1];
      r[j + 1] = hold;
     }

    }
   }
  }
 }

 public Object getParam(String param) {

  if (param.equals("cod")) {
   return new Integer(cod);
  }
  else if (param.equals("name")) {
   return name;
  }
  else {
   return new Integer(telefone);
  }
 }

 public String toString() {
  return cod + " - " + name + " - " + telefone;
 }

 public static void main(String[] v) {
  Registro  r1  = new Registro(1, "marcio", 5555555);
  Registro  r2  = new Registro(2, "marcelo", 1111111);
  Registro  r3  = new Registro(6, "andre", 3333333);
  Registro  rn[]  = {r1, r2, r3};
  int       i   = 0;

  int       n   = rn.length;
  System.out.println("Ordenado por \"cod\"");
  Registro.ordenaRegistro(rn, "cod");
  for (i = 0; i < n; i++) {
   System.out.println(rn[i]);
  }
  System.out.println("\nOrdenado por \"name\"");
  Registro.ordenaRegistro(rn, "name");
  for (i = 0; i < n; i++) {
   System.out.println(rn[i]);
  }
  System.out.println("\nOrdenado por \"telefone\"");
  Registro.ordenaRegistro(rn, "telefone");
  for (i = 0; i < n; i++) {
   System.out.println(rn[i]);
  }
 }

}

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, March 01, 2002 9:25 AM
Subject: [java-list] sort dinamico


> pessoal
>
> eu gostaria  de buscar no banco uma certa quantidade de registros, que
contenha 3 campos.
>
> e queria armazenar em um codiga java de forma que quando for utilizar
estes registros possa escolher a ordem de busca: por exemplo:
>
>
> campos : cod  name          telefone
>    ---  ------------  --------
>                 1    marcio       5555555
>                 2    marcelo      1111111
>                 6    andre     3333333
>
> em determinada situacao quero que  estes registros venham ordenados por
cod. Em outra situacao quero que os registros venham ordenados por nome. E
em outra situacao quero registros ordenados venham por telefone.
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> historico: http://www.mail-archive.com/java-list%40soujava.org.br
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a