Requisito previo: Comparator Interface en Java , TreeSet en Java
El método compare() en Java compara dos objetos específicos de clase (x, y) proporcionados como parámetros. Devuelve el valor:
- 0: si (x==y)
- -1: si (x < y)
- 1: si (x > y)
Sintaxis:
public int compare(Object obj1, Object obj2)
donde obj1 y obj2 son los dos objetos que se compararán utilizando el método compare().
Ejemplo:
Para mostrar el funcionamiento del método compare() usando Integer Class.
Java
// Java program to demonstrate working // of compare() method using Integer Class import java.lang.Integer; class Gfg { // driver code public static void main(String args[]) { int a = 10; int b = 20; // as 10 less than 20, // Output will be a value less than zero System.out.println(Integer.compare(a, b)); int x = 30; int y = 30; // as 30 equals 30, // Output will be zero System.out.println(Integer.compare(x, y)); int w = 15; int z = 8; // as 15 is greater than 8, // Output will be a value greater than zero System.out.println(Integer.compare(w, z)); } }
Producción:
-1 0 1
Cómo se evalúa el valor de retorno:
El funcionamiento interno del método compare() se puede visualizar con la ayuda del siguiente pseudocódigo:
Java
// Converting the two objects to integer // for comparison int intObj1 = (int)obj1; int intObj2 = (int)obj2; // Get the difference int difference = intObj1 - intObj2; if (difference == 0) { // Both are equal return 0; } else if (difference < 0) { // obj1 < obj2 return -1; } else { // obj1 > obj2 return 1; }
Visualizando el método compare() con este enfoque:
Java
// Java program to demonstrate working // of compare() method import java.lang.Integer; class Gfg { // Function to compare both objects public static int compare(Object obj1, Object obj2) { // Converting the two objects to integer // for comparison int intObj1 = (int)obj1; int intObj2 = (int)obj2; // Get the difference int difference = intObj1 - intObj2; if (difference == 0) { // Both are equal return 0; } else if (difference < 0) { // obj1 < obj2 return -1; } else { // obj1 > obj2 return 1; } } // driver code public static void main(String args[]) { int a = 10; int b = 20; // as 10 less than 20, // Output will be a value less than zero System.out.println(compare(a, b)); int x = 30; int y = 30; // as 30 equals 30, // Output will be zero System.out.println(compare(x, y)); int w = 15; int z = 8; // as 15 is greater than 8, // Output will be a value greater than zero System.out.println(compare(w, z)); } }
Producción:
-1 0 1
Varias implementaciones posibles del método compare()
public int compare(Object obj1, Object obj2) { Integer I1 = (Integer)obj1; // typecasting object type into integer type Integer I2 = (Integer)obj2; // same as above .. // 1. return I1.compareTo(I2); // ascending order [0, 5, 10, 15, 20] // 2. return -I1.compareTo(I2); // descending order [20, 15, 10, 5, 0] // 3. return I2.compareTo(I1); // descending order [20, 15, 10, 5, 0] // 4. return -I2.compareTo(I1); // ascending order [0, 5, 10, 15, 20] // 5. return +1; // insertion order [10, 0, 15, 5, 20, 20] // 6. return -1; // reverse of insertion order [20, 20, 5, 15, 0, 10] // 7. return 0; // only first element [10] }
Publicación traducida automáticamente
Artículo escrito por Rohit_ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA