Diferencia entre ordinal() y compareTo() en Java Enum

Las enumeraciones sirven para representar un grupo de constantes con nombre en un lenguaje de programación. Si queremos representar un grupo llamado constante, debemos elegir Enum. Cada constante de enumeración es estática. Por lo tanto, podemos acceder a él usando la enumeración Nombre.

Ejemplo:

enum Day{
  SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}

Método ordinal()

java.lang.Enum.ordinal() informa sobre el número ordinal (es la posición en su declaración de enumeración , donde a la constante inicial se le asigna un ordinal de cero) para la enumeración particular.

El método ordinal() es un método no estático, significa que solo es accesible con el objeto de la clase y si intentamos acceder al objeto de otra clase, dará el error. Es un método final, no se puede anular.

El método ordinal() devuelve el ordinal de la constante de enumeración. (su posición en su declaración de enumeración, donde a la primera constante se le asigna un ordinal de cero).

Sintaxis: 

public final int ordinal();

Valor devuelto:

This method returns the ordinal of this enumeration constant.

Ejemplo:

Day d1 = Day.TUESDAY;
System.out.println("the ordinal value is :" + d1.ordinal());

Output:
the ordinal value is : 2

Java

// Java program to show the usage of 
// ordinal() method of java enumeration 
  
enum Day{
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
  
class Main{
      
    public static void main(String args[])
    {
       Day days[] = Day.values();
       for(Day d : days)
       System.out.print(d.ordinal() + " " );
    }
}
Producción

0 1 2 3 4 5 6 

método compareTo()

El método compareTo() de la clase Enum compara este objeto enumerado con el objeto definido para el orden. Las constantes de enumeración solo se pueden comparar con otras constantes de enumeración del mismo tipo.

Devoluciones:

  1. Un entero negativo, si esta enumeración es menor que el objeto definido.
  2. cero, si esta enumeración es igual al objeto definido.
  3. un entero positivo, si esta enumeración es mayor que el objeto definido.

Sintaxis:

int compareTo(Object obj)

Ejemplo:

Día día1 = Día.DOMINGO;

Día día2 = Día.LUNES;

System.out.println(day1.compareTo(day2));

Dado que el valor ordinal de day1 es menor que day2, devolverá un valor negativo.

Java

// Java program to show the usage of 
// compareTo() method of java enumeration 
  
enum Day
{
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
  
class GFG{
      
    public static void main(String args[])
    {
        Day d1 = Day.SUNDAY;
          Day d2 = Day.MONDAY;
          Day d3 = Day.TUESDAY;
        
        // will return negative value since d1 < d2    
        System.out.println(d1.compareTo(d2) );
        
        // will return positive value since d2 > d1
          System.out.println(d2.compareTo(d1) );
        
        // will return 0 since d3 == d3
        System.out.println(d3.compareTo(d3) );
         
    }
}
Producción

-1
1
0

Método ordinal()

Método CompareTo()

Devuelve la posición de la constante de enumeración
  • Devuelve un entero negativo, si esta enumeración es menor que el objeto definido.
  • Devuelve cero, si esta enumeración es igual al objeto definido.
  • Devuelve un entero positivo, si esta enumeración es mayor que el objeto definido.
No se necesita ningún argumento.  Toma una constante de enumeración como argumento.

Ejemplo: 

día de la enumeración{

DOMINGO LUNES MARTES MIÉRCOLES JUEVES VIERNES SÁBADO;

}

Día d = Día.DOMINGO;

d.ordinal() // 0

  

Ejemplo:

día de la enumeración{

DOMINGO LUNES MARTES MIÉRCOLES JUEVES VIERNES SÁBADO;

}

Día d1 = Día.DOMINGO;

Día d2 = Día.LUNES;

d1.compareTo(d2) // dado que d1 < d2 la salida será -ve

Publicación traducida automáticamente

Artículo escrito por KapilChhipa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *