Ordenación de Listas mediante Sort

Vamos a ver cómo se puede realizar la ordenación de una lista de objetos String que ha sido obtenida de forma desordenada mediante una extracción o mediante una interfaz con un sistema externo. Como se trata de objetos String, al final la ordenación se realizará siguiendo el patrón alfanumérico. Este tipo de ordenaciones nos puede resultar muy útil en la lógica de nuestras aplicaciones ya que nos permitirá mostrar listados ordenados al usuario. La verdad es que, como suele ocurrir en Java, hay varios métodos para realizar este proceso pero hoy nos centraremos en su implementación mediante la función Sort (de la librería Collections).


 

Para realizar este ejercicio, tenemos que imaginar que, como datos de partida, recibiremos una lista de objetos String sin ordenación aparente. Tras aplicar nuestra funcionalidad, el proceso deberá generar otra lista con los mismos objetos de partida pero esta vez ordenados de forma alfanumérica. Obviamente, la ordenación se realizará en función del contenido de la cadena de texto almacenada en cada uno de los objetos String. Tengamos en cuenta que aquí la idea es ver una ordenación simple, no se trata de implementar una ordenación en función del significado conceptual del contenido de dichos objetos (por ejemplo, por la cilindrada de una lista de vehículos).


Ordenación de Listas mediante la función Sort


Para explicar la idea de una ordenación de este tipo, vamos a centrarnos en el siguiente ejemplo. Aquí se parte de una lista de empresas sin ordenación aparente y se obtiene otra lista de empresas con ordenación alfabética.

 

// **************************************************

package com.universo.sort.defecto;

 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

 

public class AppListaSort {

 

      public static void main(String[] args) {

             // TODO Auto-generated method stub

               

            List<String> listaEmpresas = new ArrayList(Arrays.asList("Tesla", "Nvidia", "Intuit", "Kla", "Google",

                          "Microsoft", "Intuitive", "Costco", "Automatic", "Apple"));

               

               

            // Creacion de lista que contendra los objetos ordenados

             List<String> listaOrdenada = new ArrayList(listaEmpresas);

               

             // Ejecutamos la Ordenacion de objetos de la lista

             Collections.sort(listaOrdenada);

            

             System.out.println(" *** Lista original *** ");

             for (String item : listaEmpresas) {

                  System.out.println(item.toString());

             }

               

             System.out.println(" -------------------------------------------------- ");

               

             System.out.println(" *** Lista ordenada *** ");

             for (String item : listaOrdenada) {

                  System.out.println(item.toString());

             }

  

      }

 

}

// ************************************************** 

 

A continuación, vamos a revisar la lógica anterior con un poco de detalle, por si hay algo que se nos escapa en una primera lectura.

 

1º) Creamos una lista inicial que posteriormente deberá ser ordenada (aquí hemos usado nombres de empresa, pero podríamos usar cualquier cadena de texto):

 

List<String> listaEmpresas = new ArrayList(Arrays.asList("Tesla", "Nvidia", "Intuit", "Kla", "Google",

             "Microsoft", "Intuitive", "Costco", "Automatic", "Apple"));

 

2º) Nos creamos la lista que contendrá, tras la ejecución del proceso, los objetos ordenados. Como se aprecia, esta nueva lista inicialmente tendrá un contenido idéntico al de la lista de partida.

 

// Creacion de lista que contendra los objetos ordenados

List<String> listaOrdenada = new ArrayList(listaEmpresas);

 

3º) A continuación, realizamos la ordenación de la lista de salida mediante la función sort de la librería Collections. Más sencillo, casi imposible.


// Ejecutamos la Ordenacion de objetos de la lista

Collections.sort(listaOrdenada);


4º) Imprimimos el contenido de la lista inicial y de la lista ordenada, para verificar que la ordenación se ha realizado de forma correcta.


5º) Si ejecutamos este proceso, el resultado debería ser una lista de empresas ordenadas alfabéticamente en función de la cadena de texto contenida en cada String.

La salida por consola debería ser algo como esto.

 

*** Lista original ***

Tesla

Nvidia

Intuit

Kla

Google

Microsoft

Intuitive

Costco

Automatic

Apple

 --------------------------------------------------

 *** Lista ordenada ***

Apple

Automatic

Costco

Google

Intuit

Intuitive

Kla

Microsoft

Nvidia

Tesla

 

Como se observa, la lista final se ha ordenado correctamente y todos sus objetos (las empresas) muestran una ordenación alfabética.


Pues nada, no hay mucho más que decir acerca de la ordenación mediante la función Sort. La verdad es que, una vez conocida su existencia, se trata de un proceso muy fácil de implementar. Eso sí, a pesar de su sencillez, no deja de ser una funcionalidad realmente útil. Por supuesto, si seguís teniendo alguna duda a pesar de todo, podéis dejármela aquí abajo.


Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Eliminar duplicados de una Lista en Java

Fichero standalone del Servidor JBoss EAP