rocio2403 / tp2

0 stars 0 forks source link

Comparable #2

Open rocio2403 opened 2 weeks ago

rocio2403 commented 2 weeks ago

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.

rocio2403 commented 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 Al implementar esta interfaz, puedes usar directamente estructuras y métodos que requieren ordenamiento, como:

Collections.sort(listaDeTraslados); para ordenar una lista de Traslado. Estructuras de datos como PriorityQueue, que automáticamente mantendrán el orden definido por compareTo. Implementar Comparable hace que la clase Traslado sea ordenable y compatible con una gran cantidad de APIs de Java para colecciones y algoritmos de ordenamiento.