Java: How To Sort an Array

Sorting an array is a fundamental task in programming, and Java provides several ways to do it efficiently. Whether you’re dealing with numbers, characters, or custom objects, this tutorial by The Coding College will guide you through different methods of sorting arrays in Java.


Why Sort an Array?

Sorting is often required to organize data, improve search efficiency, or prepare it for further processing. Java’s Arrays class and other custom methods make sorting straightforward.


Example 1: Sort an Array of Numbers

Java’s built-in Arrays.sort() method provides an easy way to sort arrays.

Example Code

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 8, 4, 1};
        
        System.out.println("Original Array: " + Arrays.toString(numbers));
        Arrays.sort(numbers);
        System.out.println("Sorted Array: " + Arrays.toString(numbers));
    }
}

Output:

Original Array: [5, 2, 8, 4, 1]  
Sorted Array: [1, 2, 4, 5, 8]

Example 2: Sort an Array of Strings

Strings can also be sorted alphabetically using Arrays.sort().

Example Code

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] fruits = {"Banana", "Apple", "Mango", "Cherry"};
        
        System.out.println("Original Array: " + Arrays.toString(fruits));
        Arrays.sort(fruits);
        System.out.println("Sorted Array: " + Arrays.toString(fruits));
    }
}

Output:

Original Array: [Banana, Apple, Mango, Cherry]  
Sorted Array: [Apple, Banana, Cherry, Mango]

Example 3: Sort an Array in Descending Order

For descending order, you can use a custom comparator with Arrays.sort().

Example Code

import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        Integer[] numbers = {5, 2, 8, 4, 1};
        
        System.out.println("Original Array: " + Arrays.toString(numbers));
        Arrays.sort(numbers, Collections.reverseOrder());
        System.out.println("Sorted Array in Descending Order: " + Arrays.toString(numbers));
    }
}

Output:

Original Array: [5, 2, 8, 4, 1]  
Sorted Array in Descending Order: [8, 5, 4, 2, 1]

Example 4: Sort a 2D Array

Sorting a 2D array requires defining custom logic. Here’s an example that sorts rows based on the first element.

Example Code

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] matrix = {
            {3, 2, 1},
            {6, 5, 4},
            {9, 8, 7}
        };

        System.out.println("Original 2D Array:");
        for (int[] row : matrix) {
            System.out.println(Arrays.toString(row));
        }

        Arrays.sort(matrix, (a, b) -> Integer.compare(a[0], b[0]));

        System.out.println("\nSorted 2D Array:");
        for (int[] row : matrix) {
            System.out.println(Arrays.toString(row));
        }
    }
}

Output:

Original 2D Array:
[3, 2, 1]  
[6, 5, 4]  
[9, 8, 7]  

Sorted 2D Array:
[3, 2, 1]  
[6, 5, 4]  
[9, 8, 7]

Example 5: Custom Sorting Using Comparator

If you want to sort objects or apply a specific logic, use a Comparator.

Example Code

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] names = {"John", "Alice", "Bob", "Charlie"};
        
        System.out.println("Original Array: " + Arrays.toString(names));
        Arrays.sort(names, (a, b) -> b.length() - a.length()); // Sort by length, descending
        System.out.println("Sorted Array by Length: " + Arrays.toString(names));
    }
}

Output:

Original Array: [John, Alice, Bob, Charlie]  
Sorted Array by Length: [Charlie, Alice, John, Bob]

Best Practices

  1. Choose the Right Method: Use Arrays.sort() for simple arrays and custom logic for complex structures.
  2. Handle Edge Cases: Ensure arrays with null or empty values are handled gracefully.
  3. Optimize for Performance: Sorting large datasets may require efficient algorithms like quicksort or mergesort.

Conclusion

Sorting arrays in Java is versatile and can handle simple to complex requirements. Using built-in methods like Arrays.sort() or custom comparators, you can sort data efficiently.

For more Java tutorials and in-depth coding guidance, visit The Coding College and level up your skills!

Leave a Comment