[Ayuda] Ordenar los elementos de un ArrayList

Iniciado por jscrip, 7 Julio 2013, 11:14 AM

0 Miembros y 1 Visitante están viendo este tema.

jscrip

Hola, quiero ordenar los elementos de un ArrayList en forma ascendente o descendente, pero me sale error. Los elementos del ArrayList son String e Int:
public class Consulta {
 
   public static void ingreso(ArrayList registros){
       int op2, op1;
       String id = Ingreso.getString(": ");
       String name = Ingreso.getString("Nombre: ");
       int cel = Ingreso.getInt("Cell: ");
       String descripcion = Ingreso.getString("Descripcion: ");
       Empresa p = new Empresa(id, name, cell, descripcion);
       p.imprimirInfoEmpresa();
       registros.add(p);
   }
   
   public static void consulta(ArrayList registros){
      ||||||||||||||||||
           case 1:
               String cedula = Ingreso.getString("Ingrese el id:");
               for(int i=0; i<registros.size();i++){
                   Empresa p = (Empresa)registros.get(i);
                       Collections.sort(registros); //Me sale error Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
  symbol:   variable cel

                       
                     
}
||||||||||||

Gracias de antemano por la ayuda.

~ Yoya ~

No puedes organizar datos que no son mutuamente comparable, osea no puedes ordenar objetos de diferente tipos.
Lo que puedes hacer es pasar los Integer a String, así tendrás solo datos del mismo tipo, en este caso String.

Luego si quieres puedes utilizar el metodo reverse de la clase Collections, para tener los datos descendente. La otra opción es utilizar interfaz Comparactor.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

jscrip

Cita de: ~ Yoya ~ en  8 Julio 2013, 03:12 AM
No puedes organizar datos que no son mutuamente comparable, osea no puedes ordenar objetos de diferente tipos.
Lo que puedes hacer es pasar los Integer a String, así tendrás solo datos del mismo tipo, en este caso String.

Luego si quieres puedes utilizar el metodo reverse de la clase Collections, para tener los datos descendente. La otra opción es utilizar interfaz Comparactor.

Saludos.

Gracias por responder, lo pasé a String todo y me sale este error: Exception in thread "main" java.lang.ClassCastException: Project_EMPRESA.Empresa cannot be cast to java.lang.Comparable
   at java.util.Collections.sort(Collections.java:159)
   at Project_EMPRESA.Opcion.ingreso(Opcion.java:53)
   at Project_EMPRESA.Principal.main(Principal.java:38)
Java Result: 1

~ Yoya ~

Si pasaste todo a String y lo ordenas utilizando Collections.sort($ArrayListDeString) entonce no tiene porque dar error.

Habras hecho algo mal o tenias algo mal, te recomiendo que utilices el Debugger para que sepas en donde y que momento el programa explota.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

jscrip

Cita de: ~ Yoya ~ en  8 Julio 2013, 22:37 PM
Si pasaste todo a String y lo ordenas utilizando Collections.sort($ArrayListDeString) entonce no tiene porque dar error.

Habras hecho algo mal o tenias algo mal, te recomiendo que utilices el Debugger para que sepas en donde y que momento el programa explota.
Tenía el ArrayList object, tuve que especificar que es string. Gracias por la ayuda.