How compare() method works in Java – GeeksforGeeks

Prerequisite: Comparator Interface in Java, TreeSet in Java
The 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. 

Example:

To show working of compare() method using Integer Class.

Java




 

import java.lang.Integer;

 

class Gfg {

 

    

    public static void main(String args[])

    {

        int a = 10;

        int b = 20;

 

        

        

        System.out.println(Integer.compare(a, b));

 

        int x = 30;

        int y = 30;

 

        

        

        System.out.println(Integer.compare(x, y));

 

        int w = 15;

        int z = 8;

 

        

        

        System.out.println(Integer.compare(w, z));

    }

}



Output: 

-1
0
1

 

How is the return value evaluated:

The internal working of the compare() method can be visualized with the help of below pseudocode:

Java




int intObj1 = (int)obj1;

int intObj2 = (int)obj2;

 

int difference = intObj1 - intObj2;

 

if (difference == 0) {

 

    

    return 0;

}

else if (difference < 0) {

 

    

    return -1;

}

else {

 

    

    return 1;

}



Visualizing the compare() method with this approach:

Java




 

import java.lang.Integer;

 

class Gfg {

 

    

    public static int compare(Object obj1, Object obj2)

    {

 

        

        

        int intObj1 = (int)obj1;

        int intObj2 = (int)obj2;

 

        

        int difference = intObj1 - intObj2;

 

        if (difference == 0) {

 

            

            return 0;

        }

        else if (difference < 0) {

 

            

            return -1;

        }

        else {

 

            

            return 1;

        }

    }

 

    

    public static void main(String args[])

    {

        int a = 10;

        int b = 20;

 

        

        

        System.out.println(compare(a, b));

 

        int x = 30;

        int y = 30;

 

        

        

        System.out.println(compare(x, y));

 

        int w = 15;

        int z = 8;

 

        

        

        System.out.println(compare(w, z));

    }

}



Output: 

-1
0
1

 

Various possible implementations of compare() method

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]
}

My Personal Notes

arrow_drop_up