Java Program to Sort Elements in Lexicographical Order (Dictionary Order)

Updated on December 18, 2024
Sort elements in lexicographical order (dictionary order) header image

Introduction

Sorting elements in lexicographical order, commonly known as dictionary order, is a fundamental task in programming that involves arranging items (such as words or numbers) as they appear in a dictionary. This concept is essential in various applications, from organizing names in an address book to ordering keywords in programming scripts. Java provides efficient ways to perform this task using its standard library methods and data structures.

In this article, you will learn how to sort elements in lexicographical order using various Java examples. Discover practical applications using arrays and collections, and delve into custom sorting methods for a deeper control over the sorting logic.

Sorting Using the Arrays Class

Sorting Strings in an Array

  1. Utilize the Arrays.sort() method from Java’s standard library to sort an array of strings.

  2. Print the sorted array to verify the order.

    java
    import java.util.Arrays;
    
    public class SortLexicographical {
        public static void main(String[] args) {
            String[] fruits = {"Banana", "Apple", "Orange", "Mango"};
            Arrays.sort(fruits);
            System.out.println("Sorted Fruits: " + Arrays.toString(fruits));
        }
    }
    

    In the example above, the Arrays.sort() method arranges the strings in the fruits array in lexicographical order. The result shows "Apple", "Banana", "Mango", and "Orange", demonstrating dictionary order sorting.

Sorting Case-Insensitive

  1. Use Arrays.sort() with a custom comparator to handle case-insensitive sorting.

  2. Verify the order by printing the sorted array.

    java
    import java.util.Arrays;
    
    public class SortLexicographical {
        public static void main(String[] args) {
            String[] items = {"banana", "Apple", "orange", "mango"};
            Arrays.sort(items, String.CASE_INSENSITIVE_ORDER);
            System.out.println("Sorted Items: " + Arrays.toString(items));
        }
    }
    

    This snippet showcases the use of String.CASE_INSENSITIVE_ORDER as a comparator to sort the array items in a case-insensitive manner. This means "Apple" and "apple" are treated as identical in order of precedence.

Utilizing Collections Framework

Sorting a List of Strings

  1. Convert an array to a list and utilize Collections.sort() for sorting.

  2. Display the sorted list to see the result.

    java
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class SortLexicographical {
        public static void main(String[] args) {
            List<String> listItems = Arrays.asList("Banana", "Apple", "Orange", "Mango");
            Collections.sort(listItems);
            System.out.println("Sorted List Items: " + listItems);
        }
    }
    

    By converting the array to a list and using Collections.sort(), this approach sorts the list listItems in lexicographical order. The method directly affects the list, reflecting the sorted order in the output.

Sorting with Lambdas for Custom Order

  1. Implement sorting with a lambda expression for custom requirements, such as reversing the order.

  2. Print the list to validate the reversed dictionary order.

    java
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class SortLexicographical {
        public static void main(String[] args) {
            List<String> gadgets = Arrays.asList("Laptop", "Smartphone", "Tablet", "Smartwatch");
            Collections.sort(gadgets, (a, b) -> b.compareTo(a));  // Reverse order
            System.out.println("Reversed Order: " + gadgets);
        }
    }
    

    The lambda (a, b) -> b.compareTo(a) reverses the default sorting order, so the list gadgets is organized in reverse lexicographical order.

Conclusion

Sorting elements in lexicographical order in Java can be accomplished using various methods provided by the language's standard library. The ease of using Arrays.sort() and Collections.sort() allows for rapid implementation of standard alphabetical sorting and advanced custom orderings. Whether dealing with arrays or lists, Java’s comprehensive toolkit supports efficient and effective sorting strategies. Implement these ideas in your projects to ensure structured and accessible data management. By mastering these sorting techniques, optimize data processing tasks and enhance the overall functionality of your Java applications.