Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

¿Cual es la diferencia entre 0, 1, -1?

Buenas compañeros, quiero completar mis notas y me ayudaria si me pueden explicar la diferencia entre estos tres tipos, gracias

class OrdenadorPorNumeroDeCuenta implements Comparator<Cuenta> {

    @Override
    public int compare(Cuenta o1, Cuenta o2) {
        if (o1.getNumero() == o2.getNumero()) {
            return 0; // ?
        } else if (o1.getNumero() > o2.getNumero()) {
            return 1; // ?
        } else {
            return -1; //?
        }
    }

}
2 respuestas

En cuanto a las diferencias entre los valores de retorno en el método compare:

Si o1.getNumero() es igual a o2.getNumero(), se devuelve 0. Esto indica que los dos objetos de cuenta son considerados iguales en términos de ordenamiento por número de cuenta.

Si o1.getNumero() es mayor que o2.getNumero(), se devuelve 1. Esto indica que o1 se considera mayor que o2 en términos de ordenamiento por número de cuenta.

Si o1.getNumero() es menor que o2.getNumero(), se devuelve -1. Esto indica que o1 se considera menor que o2 en términos de ordenamiento por número de cuenta.

En resumen, el método compare utiliza la lógica de comparación mencionada anteriormente para ordenar los objetos de tipo Cuenta en función de su número de cuenta. De acuerdo a lo tengo entendido el metodo retorna esas validaciones

Hola Angel, tu duda tbm esta aclarada en la doc, puedes usar chatgpt para traduccion: public interface Comparator {} Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. The implementor must ensure that signum(compare(x, y)) == -signum(compare(y, x)) for all x and y. (This implies that compare(x, y) must throw an exception if and only if compare(y, x) throws an exception.) The implementor must also ensure that the relation is transitive: ((compare(x, y)>0) && (compare(y, z)>0)) implies compare(x, z)>0. Finally, the implementor must ensure that compare(x, y)==0 implies that signum(compare(x, z))==signum(compare(y, z)) for all z. Params: o1 – the first object to be compared. o2 – the second object to be compared. Returns: a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. Throws: NullPointerException – if an argument is null and this comparator does not permit null arguments ClassCastException – if the arguments' types prevent them from being compared by this comparator. API Note: It is generally the case, but not strictly required that (compare(x, y)==0) == (x.equals(y)). Generally speaking, any comparator that violates this condition should clearly indicate this fact. The recommended language is "Note: this comparator imposes orderings that are inconsistent with equals.