Java Sort Array Objects Using Comparable Interface

Introduction

In Java, the Comparable interface is used to define the natural ordering of objects. This interface imposes a total ordering on the objects of each class that implements it. The Comparable interface contains a single method, compareTo, which you need to implement to define the natural ordering.

This tutorial will demonstrate how to sort an array of objects using the Comparable interface.

Table of Contents

  1. What is the Comparable Interface?
  2. Implementing the Comparable Interface
  3. Sorting an Array of Objects
  4. Complete Example Program
  5. Conclusion

1. What is the Comparable Interface?

The Comparable interface is a part of the Java Collections Framework and is used to impose a natural ordering on the objects of a class. It has a single method:

public int compareTo(T o);

This method compares the current object with the specified object for order. It returns:

  • A negative integer, if the current object is less than the specified object.
  • Zero, if the current object is equal to the specified object.
  • A positive integer, if the current object is greater than the specified object.

2. Implementing the Comparable Interface

To sort an array of objects, the class of the objects must implement the Comparable interface.

Example:

Let's consider a Person class with attributes name and age. We will implement the Comparable interface to sort Person objects by their age.

class Person implements Comparable<Person> {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Person other) {
        return Integer.compare(this.age, other.age);
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + '}';
    }
}

3. Sorting an Array of Objects

With the Comparable interface implemented, we can now sort an array of Person objects using the Arrays.sort method.

4. Complete Example Program

Here is a complete example program that demonstrates how to sort an array of Person objects by their age.

Example Code:

import java.util.Arrays;

public class SortArrayObjectsExample {
    public static void main(String[] args) {
        // Create an array of Person objects
        Person[] people = {
            new Person("Alice", 30),
            new Person("Bob", 25),
            new Person("Charlie", 35)
        };

        // Print the array before sorting
        System.out.println("Before sorting:");
        printArray(people);

        // Sort the array
        Arrays.sort(people);

        // Print the array after sorting
        System.out.println("After sorting:");
        printArray(people);
    }

    // Method to print the array
    private static void printArray(Person[] array) {
        for (Person person : array) {
            System.out.println(person);
        }
    }
}

Output:

Before sorting:
Person{name='Alice', age=30}
Person{name='Bob', age=25}
Person{name='Charlie', age=35}
After sorting:
Person{name='Bob', age=25}
Person{name='Alice', age=30}
Person{name='Charlie', age=35}

Explanation:

  1. Person Class:

    • The Person class implements the Comparable<Person> interface and overrides the compareTo method to compare Person objects by their age.
    • The toString method is overridden to provide a readable string representation of Person objects.
  2. SortArrayObjectsExample Class:

    • The main method creates an array of Person objects and prints it before sorting.
    • The Arrays.sort method is used to sort the array of Person objects.
    • The sorted array is then printed.

5. Conclusion

The Comparable interface is used for defining the natural ordering of objects in Java. By implementing the compareTo method, you can easily sort arrays (or collections) of objects. This tutorial has demonstrated how to implement the Comparable interface and sort an array of custom objects. Understanding and using this interface effectively is a crucial skill for Java developers, enabling you to manage and manipulate data more efficiently.

Comments