 |
ISIS1206 - Estructuras de Datos |
Librerías de java
Java contiene muchas librerías con clases predefinidas que pueden utilizarse. Un ejemplo de éstas es la librería utils, que contiene, por ejemplo, la clase Collection y todas las clases que extienden de la misma: ArrayList, Qeue, LinkedList, entre otras. Estas clases predeterminadas de Java pueden utilizarse para ahorrar tiempo y aprovechar sus funcionalidades. En este link, se encuentra la documentación completa de librerías de Java 7. Aunque en este curso no se utilizarán las clases de Collections, leer su documentación y sus implementaciones puede ser una buena idea para aprender más sobre las mismas. Por otro lado, existen muchas librerías que pueden llegar a ser muy útiles: la librería de DateTime, por ejemplo, puede ayudar a modelar fechas y horas fácilmente.
Ordenar una lista de datos de forma eficiente es una tarea habitual en el desarrollo de aplicaciones. Afortunadamente, la librería utils de java ofrece el método sort de la clase Arrays. Es un método estático, lo que significa que puede utilizarse sin necesidad de tener una referencia a una instancia de la clase:
Arrays.sort(MiArreglo)
El resultado de este método será un arreglo que contenga los elementos originales, ordenados según el tipo de los elementos. Cabe aclarar que este método solo funciona con arreglos de tamaño fijo, no con arreglos dinámicos u otro tipo de listas. Sin embargo, java tiene ese mismo método en la clase Collections que sirve para ordenar cualquier elemento que implemente la interfaz List, siempre y cuando también implemente la interfaz Comparable:
Collections.sort(MiLista)
De vez en cuando, se dará la ocasión en la que se necesite ordenar objetos de una misma lista según criterios diferentes. Afortunadamente, tanto la clase Arrays como la clase Collections ofrecen un segundo método sort, que recibe por parámetro, además de la lista o arreglo a ordenar, un Comparador, o Comparator. Comparator es una interfaz genérica de java que exige que se implementen los métodos compareTo y equals. Se pueden hacer tantos comparator como sean necesarios para una misma clase, y se pueden utilizar luego para ordenar listas y arreglos de muchas maneras distintas.
public class MiComparador implements Comparator<MiClase>
public int compareTo( MiClase o1, MiClase o2) { return o1.atributo.compareTo(o2.atributo) }
Utilizar el método compareTo de atributos de objetos a comparar es sólo una posibilidad de implementación. Basta con recordar que el retorno define el orden de los objetos.
```java
MiComparador comp = new MiComparador();
Collections.sort(MiLista, comp);
Si desea saber más sobre otros métodos predefinidos de Java, como binarySearch y reverseOrder, entre otros, puede revisar la documentación en el link.
Explore la documentación de la clase Collection y de las clases que extienden de la misma. Se encontrará, muchas veces, con interfaces, utilizadas para tener un bajo acoplamiento del código. Gracias a estas interfaces, se pueden crear numerosas implementaciones de una misma estructura de datos. Es recomendable que en sus ejercicios siga el principio de bajo acomplamiento de tal forma que sus clases puedan ser utilizadas con diferentes implementaciones. El programador profesional busca siempre que su código sea reutilizable y fácil de modificar el bajo acoplamiento es siempre un punto muy importante.