Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Sugerencia] Al momento de sobrescribir el método compareTo()

Bruno nos muestra la siguiente implementación:

    @Override
    public int compareTo(Compra otraCompra) {
        return Double.valueOf(this.valor).compareTo(Double.valueOf(otraCompra.getValor()));
    }

Pero considero que hay una mejor forma de hacerlo:

    @Override
    public int compareTo(Compra otraCompra) {
        return Double.compare(this.getValor(), otraCompra.getValor());
    }

¿Qué opinan? Bajo mi punto de vista es menos verbosa y más conscisa que la anterior

2 respuestas
solución!

¡Hola Yahadad!

Tu sugerencia es excelente y tienes toda la razón. Usar Double.compare(this.getValor(), otraCompra.getValor()) es una forma más concisa y eficiente de implementar el método compareTo(). La versión que utiliza Double.valueOf() es más verbosa porque convierte los valores primitivos double a objetos Double, lo cual no es necesario para realizar la comparación.

La función Double.compare() está diseñada para comparar directamente dos valores primitivos double, lo que la hace más directa y evita la sobrecarga de crear objetos adicionales. Además, es una práctica común y recomendada en Java para comparar valores primitivos de tipo double.

Aquí tienes un ejemplo práctico de cómo se vería tu implementación en un contexto de uso:

public class Compra implements Comparable<Compra> {
    private double valor;

    public Compra(double valor) {
        this.valor = valor;
    }

    public double getValor() {
        return valor;
    }

    @Override
    public int compareTo(Compra otraCompra) {
        return Double.compare(this.getValor(), otraCompra.getValor());
    }
}

Con esta implementación, puedes ordenar fácilmente una lista de Compra usando Collections.sort() y se ordenará correctamente por el valor de cada compra.

Espero que esta respuesta te haya sido útil y que sigas disfrutando de tus estudios de Java. ¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Gracias por considerar mi sugerencia, ingeniero Luis.