Open rocio2403 opened 2 weeks ago
EJEMPLO @ Override public int compareTo(Traslado other) { // Primero, comparar por ganancia neta de forma descendente if (this.gananciaNeta != other.gananciaNeta) { return Integer.compare(other.gananciaNeta, this.gananciaNeta); } else { // Si la ganancia neta es igual, comparar por ID de forma ascendente return Integer.compare(this.id, other.id); } } Explicación del método compareTo Comparación por gananciaNeta:
El método primero compara el atributo gananciaNeta de dos traslados, donde el traslado con mayor ganancia neta será considerado "mayor". Por eso se usa Integer.compare(other.gananciaNeta, this.gananciaNeta) para ordenar de forma descendente. Comparación secundaria por id:
Si dos traslados tienen la misma ganancia neta, se usa el id como criterio secundario de orden. En este caso, el método ordena por id en orden ascendente (de menor a mayor), utilizando Integer.compare(this.id, other.id).
Beneficio de implementar Comparable
Collections.sort(listaDeTraslados); para ordenar una lista de Traslado.
Estructuras de datos como PriorityQueue
La sintaxis implements Comparable en Java significa que la clase Traslado implementa la interfaz Comparable, parametrizada con el mismo tipo de clase Traslado. Esto permite que los objetos de tipo Traslado se comparen entre sí para determinar cuál es mayor o menor según un criterio definido.
¿Qué es Comparable? Comparable es una interfaz en Java que proporciona un método llamado compareTo, el cual define el "orden natural" de los objetos. Cuando una clase implementa Comparable, es posible ordenar sus instancias, ya sea utilizando colecciones ordenadas (como TreeSet o TreeMap), métodos de ordenación (como Collections.sort) o estructuras de datos como PriorityQueue.
Uso de Comparable
Cuando Traslado implementa Comparable, está definiendo la forma en la que los objetos Traslado deben ser comparados entre sí. El método compareTo se sobrescribe en la clase Traslado para establecer el criterio de comparación.