23 de noviembre de 2020

Ordenar colecciones (List)

En esta entrada vamos a utilizar una colección de Strings para ver cómo ordenar una colección:

List<String> listaStrings = Arrays.asList("a", "c", "b", "ab");

Ordenar una colección como ésta es muy fácil debido a que hay una forma natural de ordenar cadenas de texto alfabéticamente. Para ello vamos a usar el método sort. Si nuestra variable es del tipo Collection no contaremos con ese método. Una Collection no contempla el orden, para eso debemos usar una List como en el ejemplo.

Una variable nos asegura un tipo y nos permite usar la API de ese tipo, pero el objeto puede tener implementaciones "más completas".

Para ello voy a crearme otra variable de tipo Collection y le asignaré el mismo objeto creado del tipo List:

Collection<String> strings = listaStrings;

Vamos a imprimirnos nuestra colección para ver el estado inicial desordenado:

System.out.println(strings);

Nos da como salida:

[a, c, b, ab]

Si intentamos usar el método sort queda claro que un objeto no es lo mismo que una variable.

listaStrings.sort(null);
//  strings.sort(); // No aparece siendo el mismo objeto

Después de ordenar volvemos a imprimir y ya nos sale ordenada:

System.out.println(strings);
[a, ab, b, c]

También podemos usar Collections, que es una clase de utilidad para las colecciones, pero igualmente nos pide un tipo List:

Collections.sort(listaStrings);

Sin embargo, no siempre vamos a querer ordenar con éste criterio o puede que necesitemos ordenar un tipo que no tiene un orden natural. En la siguiente entrada vemos cómo trabajar con comparadores y la interface Comparable.

No hay comentarios:

Publicar un comentario

Compárteme

Entradas populares