Java - Duda Interface Comparable

 
Vista:
sin imagen de perfil
Val: 30
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Duda Interface Comparable

Publicado por luis (22 intervenciones) el 29/08/2019 14:09:57
Hola buenas a todos, he vuelvo a retomar el aprendizaje en java, tengo dudas con el interface Comparable utilizando su método compareTo(). Lo utilice en un ejemplo y me funcionó, pero no se si está bien implementado el código, a continuación dejo detalle de dicho código:

1
2
3
4
5
6
7
8
9
10
11
12
public int compareTo(Empleado o)
{
if(edad<o.edad)
{
return -1;
}
if(edad>o.edad)
/ {
/ return 1;
/ }
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 1.894
Oro
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Duda Interface Comparable

Publicado por Kabuto (471 intervenciones) el 30/08/2019 01:28:53
El código es correcto.
Puede mejorarse un poco. Casi que sería una mejora desde el punto de vista didáctico, y no tanto en términos de computación.

Cuando un if tan solo va a ejecutar una sola instrucción, puedes prescindir de las llaves { }, en este caso son opcionales.
Si fuera a ejecutar más de una instrucción, entonces si es obligatorio usar llaves para que el compilador sepa que instrucciones son las que componen el conjunto que ha de ejecutarse si se cumple la condición del if.

Luego, aunque en este caso no aportan absolutamente nada, queda mejor si usamos la instrucción else. Más que nada para remarcar que cada condición ha de evaluarse porque la anterior ha resultado false.

1
2
3
4
5
6
7
8
public int compareTo(Empleado o) {
    if(edad<o.edad)
        return -1;
    else if(edad>o.edad)
        return 1;
    else
        return 0;
}

Como digo, en este caso, estos cambios no aportarían nada a nivel computacional. El código no gana ningún tipo de optimización, más allá de ahorrarnos unas pocas líneas.
De cara al computador, le va a dar igual escribirlo como tú lo has hecho a como lo he hecho yo.

Pero, a nivel didáctico, es decir, de cara a la persona que pueda estar leyendo el código. Ahorrarnos las llaves da sensación de que hay menos código para leer y el uso de las instrucciones else evidencia que las condiciones a evaluar son opuestas entre ellas. Si una condición se cumple, el resto de condiciones no han de ser evaluadas.

Que en este caso, esto ya ocurre sin necesidad de usar los else. Porque si se cumple una condición, se ejecuta una sentencia return y esto ya pone fin al método sin que se siga evaluando nada más.
Pero aunque no sea necesario, queda más didáctico usar los else.


En fin, toda esta explicación es en realidad para concluir que tu código es totalmente correcto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 30
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Duda Interface Comparable

Publicado por luis (22 intervenciones) el 30/08/2019 02:09:41
Ok gracias, si exacto tienes razon en lo de utilizar los else, lo de las llaves siempre lo coloco asi, aunque se que al ser una sola instruccion se pueden prescindir de ellas. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 982
Plata
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Duda Interface Comparable

Publicado por Rodrigo (252 intervenciones) el 30/08/2019 16:15:06
Lo uue se espera de compareTo es que devuelva un numero negativo, 0 o un numero postivo, 1 o -1 son un caso particular, pero esto no es lo que se espera.

Basado en lo que se espera, puedes simplificar la implementacion a:

1
2
3
public int compareTo(Empleado o) {
    return edad - o.edad;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar