bloque4:comparable
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| bloque4:comparable [12/03/2018 10:25] – Fernando Valdeón | bloque4:comparable [04/09/2018 08:06] (actual) – borrado Fernando Valdeón | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | | ||
| - | Cuando una clase implementa una interface, obliga a sobrescribir los métodos de esa interface. En Java tenemos muchas interfaces para hacer que nuestras clases tengan una forma común. | ||
| - | La interfaz Comparable nos servirá para poder ordenar colecciones de objetos (Arrays, ArrayLists, LinkedLists, | ||
| - | ===== Interface Comparable ===== | ||
| - | La interface Comparable se usa para obligar a las clases que la implementan a definir sus métodos, de cara a poder ser ordenados. Esta interface solo tiene un método: '' | ||
| - | |||
| - | https:// | ||
| - | |||
| - | Cuando una clase implementa la interface Comparable, es posible ordenar mediante los métodos de las clases de Java, Arrays o colecciones de tipo list, por poner ejemplos. | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== Método compareTo() ==== | ||
| - | El método '' | ||
| - | * Devuelve 0 en caso de que ambos objetos tengan el mismo orden (no haya uno mayor que otro) | ||
| - | * Un número entero negativo si el objeto actual es menor al objeto pasado como parámetro | ||
| - | * Un número positivo si el objeto actual es mayor al objeto pasado como parámetro | ||
| - | |||
| - | La interfaz Comparable es implementada por una clase según la siguiente definición: | ||
| - | <code java> | ||
| - | public class Coche implements Comparable< | ||
| - | … | ||
| - | | ||
| - | … | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Así indicamos que vamos a implementar la interface '' | ||
| - | |||
| - | ==== Criterios de órden ==== | ||
| - | A continuación, | ||
| - | Por ejemplo, podemos definir que un coche con un LocalDate fechaMatriculación mayor que otro, es un coche mayor. O que un coche con un String matrícula menor que otra será un objeto menor. | ||
| - | |||
| - | Una vez tengamos seleccionado el atributo/s que indicará quien es mayor, debemos implementar el método compareTo() a partir de la comparación de esos atributos. Si el atributo es una referencia a un objeto, podemos usar el método compareTo() de esa clase de objetos, si lo tienen implementado. En el caso de los Strings, ya tienen implementado la interface Comparable, y tienen su propio método compareTo(). Esto mismo ocurrirá con distintos objetos de clases de la API de Java. Si queremos que nuestros objetos sean ordenables deben implementar esta interface. | ||
| - | |||
| - | Ejemplos de implementación del método compareTo(): | ||
| - | <code java> | ||
| - | // | ||
| - | public int compareTo(Coche otro){ | ||
| - | return this.km – otro.km; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <code java> | ||
| - | // | ||
| - | public int compareTo(Coche otro){ | ||
| - | return fechaMatriculacion.compareTo(otro.fechaMatriculacion); | ||
| - | // Devuelvo lo que devuelve el método compareTo() de LocalDate | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <code java> | ||
| - | // | ||
| - | public int compareTo(Coche otro){ | ||
| - | return matricula.compareTo(otro.matricula); | ||
| - | // Devuelvo lo que devuelve el método compareTo() de String | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Reglas de implementación ==== | ||
| - | Además, tal y como se comenta en la API sobre la interface [[https:// | ||
| - | * Si el valor que devuelve a.compareTo(b) es x, el valor que devuelve b.compareTo(a) será -x. CompareTo() debe ser reciproco. | ||
| - | * Si el objeto que se recibe por parámetro es null debe lanzar una excepción de tipo NullPointerException. (throw new NullPointerException(), | ||
| - | * Si el objeto que se recibe como parámetro no permite ser comparado debe lanzar una excepción de tipo ClassCastException. | ||
| - | * Si el método equals() de la clase que implementa la interface devuelve true, compareTo() debe devolver 0. | ||
| - | |||
| - | ---- | ||
| - | (c) {{date> %Y}} Fernando Valdeón | ||
bloque4/comparable.1520850332.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)
