Saturday, October 4, 2025
HomeLanguagesJavaSort an array of pairs using Java Arrays.sort() with custom Comparator

Sort an array of pairs using Java Arrays.sort() with custom Comparator

Given an array of pairs of integers. The task is to sort the array with respect to the second element of the pair.

Examples: 

Input: [(1, 2), (3, 5), (2, 6), (1, 7)]
Output: [(1, 2), (3, 5), (2, 6), (1, 7)]

Input: [(10, 20), (20, 30), (5, 6), (2, 5)]
Output: [(2, 5), (5, 6), (10, 20), (20, 30)]

Approach:  

  • Store the pairs in an array using a user-defined Pair class.
  • Override the comparator method to sort the array according to the second element.
  • Sort the array according to the second element.

Below is the implementation of the above approach:

Java




// Java code to sort the array
// according to second element
 
// Importing required classes
import java.util.Arrays;
import java.util.Comparator;
 
// User defined Pair class
class Pair {
    int x;
    int y;
 
    // Constructor
    public Pair(int x, int y) {
        this.x = x;
        this.y = y;
    }
 
      // Overriding toString method
    //       for beautiful printing of pairs
    @Override
    public String toString() {
        return "(" + x +
                ", " + y +
                ')';
    }
}
 
// class to define user defined comparator
class ArrayOfPairsSorter {
 
    static void sort(Pair[] arr) {
        Comparator<Pair> comparator = new Comparator<>() {
            @Override
            public int compare(Pair p1, Pair p2) {
                return p1.y
                        - p2.y; // To compare the first element
                                // just
                                // change the variable from p1.y
                                // - p2.y to p1.x-p2.x.
            }
        };
        Arrays.sort(arr, comparator);
    }
}
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args) {
 
        // Array of 5 Pairs
        Pair[] arr = new Pair[5];
 
        arr[0] = new Pair(10, 20);
        arr[1] = new Pair(1, 2);
        arr[2] = new Pair(3, 1);
        arr[3] = new Pair(10, 8);
        arr[4] = new Pair(4, 3);
 
        ArrayOfPairsSorter.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}


Output
[(3, 1), (1, 2), (4, 3), (10, 8), (10, 20)]

Dominic
Dominichttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Dominic
32334 POSTS0 COMMENTS
Milvus
86 POSTS0 COMMENTS
Nango Kala
6704 POSTS0 COMMENTS
Nicole Veronica
11868 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11929 POSTS0 COMMENTS
Shaida Kate Naidoo
6819 POSTS0 COMMENTS
Ted Musemwa
7080 POSTS0 COMMENTS
Thapelo Manthata
6775 POSTS0 COMMENTS
Umr Jansen
6776 POSTS0 COMMENTS