How compare() method works in Java - GeeksforGeeks

19 Jul, 2021
Prerequisite: Comparator Interface in Java, TreeSet in JavaThe compare() method in Java compares two class specific objects (x, y) given as parameters. It returns the value: 
0: if (x==y)
-1: if (x < y)
1: if (x > y)
Syntax:  
public int compare(Object obj1, Object obj2)
where obj1 and obj2 are the two objects to be compared using compare() method. 
To show working of compare() method using 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));    }}
-1
0
1
 
The internal working of the compare() method can be visualized with the help of below pseudocode:
Java
// Converting the two objects to integer// for comparisonint intObj1 = (int)obj1;int intObj2 = (int)obj2; // Get the differenceint difference = intObj1 - intObj2; if (difference == 0) {     // Both are equal    return 0;}else if (difference < 0) {     // obj1 < obj2    return -1;}else {     // obj1 > obj2    return 1;}
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));    }}
-1
0
1
 
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]
}
nidhi_biet
arorakashish0911
java-basics
Articles
Java
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Analysis of Algorithms | Set 1 (Asymptotic Analysis)
SQL Interview Questions
Mutex vs Semaphore
Understanding "extern" keyword in C
How to write a Pseudo Code?
Arrays in Java
Split() String method in Java with examples
For-each loop in Java
Stream In Java
Object Oriented Programming (OOPs) Concept in Java