elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ¿Cómo ordenar un ArrayList de elementos-registro según uno de sus campos?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo ordenar un ArrayList de elementos-registro según uno de sus campos?  (Leído 4,424 veces)
reygecko

Desconectado Desconectado

Mensajes: 26



Ver Perfil
¿Cómo ordenar un ArrayList de elementos-registro según uno de sus campos?
« en: 16 Enero 2013, 20:46 pm »

Hola a todos. :D

Agradecería mucho que alguien me dijera cómo se puede ordenar un ArrayList formado por registros de varios campos.  Es decir, si uno de esos campos es numérico, cómo se podría ordenar ese ArrayList para que los elementos estén ordenados de menor a mayor según ese campo numérico. 

Mi ejemplo:

Código:
import java.util.*;

public class Orden {
   
    static class Registro {
        static String texto;
        static int numero;
        static int matriz[][] = new int[2][2];
    }
   
    public static void main(String[] args) {
       
        List<Registro> lista = new ArrayList<>();
        Registro registro01 = new Registro();
        Registro registro02 = new Registro();

        // Doy valores al registro 01

        registro01.matriz[0][0] = 5;
        registro01.matriz[0][1] = 5;
        registro01.matriz[1][0] = 5;
        registro01.matriz[0][1] = 5;
        registro01.texto = "registro01";
        registro01.numero = 100;

        // Doy valores al registro 02

        registro02.matriz[0][0] = 1;
        registro02.matriz[0][0] = 1;
        registro02.matriz[0][0] = 1;
        registro02.matriz[0][0] = 1;
        registro02.texto = "registro02";
        registro02.numero = 1;     

        //Añado ambos elementos a la lista

        lista.add(0,registro01);
        lista.add(1,registro02);
    }
   
}

Haciéndolo así, el primer elemento del ArrayList sería 'registro01' y el segundo elemento sería 'registro02'.

Pues bien, la pregunta es ¿cómo se podrían ordenar de menor a mayor (según el campo registro.numero) los 2 registros que forman el ArrayList? ¿Existe algún método predefinido que lo haga?  ¿Y para ordenarlos según, por ejemplo, el valor del elemento (0,0) de las matrices? Yo no doy con ello...  :huh:

Muchas gracias de antemano y saludos.


En línea

reygecko

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: ¿Cómo ordenar un ArrayList de elementos-registro según uno de sus campos?
« Respuesta #1 en: 17 Enero 2013, 00:00 am »

¡¡CONSEGUIDO!! :D

He insistido en sobreescribir el método compare() y finalmente lo conseguí.  Dejo el código por si sirviese a alguien:

Código:
import java.util.*;

public class Orden {

    static class Registro {

        String texto;
        int numero;
        int matriz[][] = new int[2][2];
    }

    public static void main(String[] args) {
        List<Registro> lista = new ArrayList<>();
        Registro registro01 = new Registro();
        Registro registro02 = new Registro();
        Registro registro03 = new Registro();
        Registro test = new Registro();

        // Doy valores al registro 01

        registro01.matriz[0][0] = 1;
        registro01.matriz[0][1] = 1;
        registro01.matriz[1][0] = 1;
        registro01.matriz[0][1] = 1;
        registro01.texto = "registro01";
        registro01.numero = 1;

        // Doy valores al registro 02

        registro02.matriz[0][0] = 2;
        registro02.matriz[0][0] = 2;
        registro02.matriz[0][0] = 2;
        registro02.matriz[0][0] = 2;
        registro02.texto = "registro02";
        registro02.numero = 2;

        // Doy valores al registro 03

        registro03.matriz[0][0] = 3;
        registro03.matriz[0][0] = 3;
        registro03.matriz[0][0] = 3;
        registro03.matriz[0][0] = 3;
        registro03.texto = "registro03";
        registro03.numero = 3;

        //Añado ambos elementos a la lista

        lista.add(registro03);
        lista.add(registro02);
        lista.add(registro01);
       
        test = lista.get(0);
        System.out.println("El primer registro es: " + test.texto);
        test = lista.get(1);
        System.out.println("El segundo registro es: " + test.texto);
        test = lista.get(2);
        System.out.println("El tercer registro es: " + test.texto);
        System.out.println();
        System.out.println("Ahora se procede a ordenar los registros");
        System.out.println();
        Collections.sort(lista, new ordenaRegistros());
        test = lista.get(0);
        System.out.println("El primer registro es: " + test.texto);
        test = lista.get(1);
        System.out.println("El segundo registro es: " + test.texto);
        test = lista.get(2);
        System.out.println("El tercer registro es: " + test.texto);
       
    }
}

class ordenaRegistros implements Comparator<Orden.Registro> {

    public int compare(Orden.Registro r1, Orden.Registro r2) {
        if (r1.numero < r2.numero) {
            return -1;
        } else if (r1.numero > r2.numero) {
            return 1;
        } else {
            return 0;
        }

    }
}

De nuevo, millones de gracias a quienes ayudan desinteresadamente a los principiantes como yo. :)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo ordenar los registros de dos campos?
Programación Visual Basic
karmany 3 1,938 Último mensaje 22 Febrero 2006, 20:25 pm
por Ironhorse
Como agregar elementos al psp
Juegos y Consolas
mikixD 1 1,749 Último mensaje 14 Noviembre 2007, 13:58 pm
por IkSeN
Como validar estos campos
Programación Visual Basic
fedefrankk 7 4,430 Último mensaje 13 Septiembre 2008, 05:11 am
por fedefrankk
Como rellenar campos en vb
Programación Visual Basic
fedefrankk 9 4,200 Último mensaje 19 Septiembre 2008, 22:20 pm
por fedefrankk
Ordenar los campos de un formularios
Desarrollo Web
OLDNOVATO 3 2,447 Último mensaje 25 Agosto 2010, 02:32 am
por Mr. Crowley
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines