×

Sorting Program in Java

Sorting Program in Java: The sorting program in Java is used to sort arrays either in ascending or descending order.  There are two predefined methods available in Java that are used to sort the arrays/ lists. One is Arrays.sort() and another is Collections.sort(). Let’s discuss one by one.

Arrays.sort(): Arrays.sort() works very well with arrays which can be of a primitive data type.

Filename: SortingExample.java

// Importing class Arrays of the sub-package util.
import java.util.Arrays;
public class SortingExample
{             
public static void main(String argvs[])
{
               // String array
               String[] str = { "hjk", "ty", "trf", "tyf", "ytf", "bnm", "uio", "oml", "tkt" };
               // Integer Array
               int[] intAr = { 31, 5, 86, 405, 211, 19, 171, 192, 67 };
               Arrays.sort(str); // Sorting string array
               Arrays.sort(intAr);  // Sorting integer array
               // Displaying results
               System.out.printf("Sorted str[] : %s \n", Arrays.toString(str)); 
                System.out.printf("Modified intAr[] : %s", Arrays.toString(intAr));
}
}

Output:

Sorted str[] : [bnm, hjk, oml, tkt, trf, ty, tyf, uio, ytf]
Modified intAr[] : [5, 19, 31, 67, 86, 171, 192, 211, 405]

Explanation: The sort() method is the static method that is present in the Arrays class which in turn is part of the java.util sub-package. Therefore, only the class name will sufficient to invoke the sort() method. The sort() method can also be used to sort subarrays. The following example illustrates the same.

Filename: SortingExample1.java

// Importing class Arrays of the sub-package util.
import java.util.Arrays;
public class SortingExample1
{             
public static void main(String argvs[])
{
               // String array
               String[] str = { "hjk", "ty", "trf", "tyf", "ytf", "bnm", "uio", "oml", "tkt" };
               // Integer Array
               int[] intAr = { 31, 5, 86, 405, 211, 19, 171, 192, 67 };
               // Sorting string sub-array of size 8 starting from 0th index
               Arrays.sort(str, 0, 8);
               //Sorting integer sub-array of size 7 starting from 0th index
               Arrays.sort(intAr, 0, 7);
               // Displaying results
               System.out.printf("Sorted str[] : %s \n", Arrays.toString(str)); 
                System.out.printf("Modified intAr[] : %s", Arrays.toString(intAr));
}
}

Output:

Sorted str[] : [bnm, hjk, oml, trf, ty, tyf, uio, ytf, tkt]
Modified intAr[] : [5, 19, 31, 86, 171, 211, 405, 192, 67]

Explanation: In the above program, we have used the sort() method, which takes three arguments. The first argument is the array, and the second and the third arguments are the starting and ending index of the sub-array. The element presented at the ending index is not included in sorting. However, the starting index element takes part in sorting. Therefore, the above program performs sorting from 0th index to 7th index in the String array, and from 0th to 6th index for the int array.

Sorting in Descending Order in Arrays

By default, sorting is done in ascending order. However, we can do sorting in descending order. Consider the following example.

Filename: SortingExample2.java

// Importing classes Arrays and Collections of the sub-package util.
import java.util.Arrays;
import java.util.Collections;
public class SortingExample2
{             
public static void main(String argvs[])
{
               // String array
               String[] str = { "hjk", "ty", "trf", "tyf", "ytf", "bnm", "uio", "oml", "tkt" };
               // Integer Array
               Integer[] intAr = { 31, 5, 86, 405, 211, 19, 171, 192, 67 };
               // Sorting string sub-array of size 8 starting from 0th index in descending order
               Arrays.sort(str, 0, 8, Collections.reverseOrder());
               //Sorting integer sub-array of size 7 starting from 0th index in descending order
               Arrays.sort(intAr, 0, 7, Collections.reverseOrder());
               // Displaying results
               System.out.printf("Sorted str[] : %s \n", Arrays.toString(str)); 
                System.out.printf("Modified intAr[] : %s", Arrays.toString(intAr));
}
}

Output:

Sorted str[] : [ytf, uio, tyf, ty, trf, oml, hjk, bnm, tkt]
Modified intAr[] : [405, 211, 171, 86, 31, 19, 5, 192, 67]

Explanation: The reverseOrder() method does the trick here. It is a static method of the Collections class. Note that instead of int, we have used Integer in the above program. Because the reverseOrder() method deals with objects, and objects are only created of a class like Integer, not of a data type like int.

Collections.sort(): TheCollections.sort() method is mainly used for object Collections like LinkedList or ArrayList.

Filename: SortingExample3.java

// Importing classes ArrayList and Collections of the sub-package util.
import java.util.ArrayList;
import java.util.Collections;
public class SortingExample3
{             
public static void main(String argvs[])
{
               // Creating an ArrayList of strings
               ArrayList<String> arLi = new ArrayList<String>();
               // Adding elements to the list
               arLi.add("Kritesh");
               arLi.add("Suresh");
               arLi.add("Mahesh");
               arLi.add("Jignesh");
               arLi.add("Nilesh");
               arLi.add("Yogesh");
               arLi.add("Sumesh");
               arLi.add("Gitesh");
               arLi.add("Priyesh");
               // Sorting the list
               Collections.sort(arLi);
               // Displaying results
                System.out.printf("Modified list after the effect of Collections.sort(): \n" + arLi);
}
}

Output:

Modified list after the effect of Collections.sort():
[Gitesh, Jignesh, Kritesh, Mahesh, Nilesh, Priyesh, Sumesh, Suresh, Yogesh]

Explanation: Since it is a list, Arrays.sort() method will not work here. Similar to Arrays.sort() method, default style of sorting in Collections.sort() is also in ascending order. We can also sort the given list partially. The following example illustrates the same.

Filename: SortingExample3.java

// Importing classes ArrayList and Collections of the sub-package util.
import java.util.ArrayList;
import java.util.Collections;
public class SortingExample3
{             
public static void main(String argvs[])
{
               // Creating an ArrayList of strings
               ArrayList<String> arLi = new ArrayList<String>();
               // Adding elements to the list
               arLi.add("Kritesh");
               arLi.add("Suresh");
               arLi.add("Mahesh");
               arLi.add("Jignesh");
               arLi.add("Nilesh");
               arLi.add("Yogesh");
               arLi.add("Sumesh");
               arLi.add("Gitesh");
               arLi.add("Priyesh");
               // Sorting the list from 0th element to 4th element.
               Collections.sort(arLi.subList(0, 5));
               // Displaying results
                System.out.printf("Modified list after the effect of Collections.sort(): \n" + arLi);
}
}

Output:

Modified list after the effect of Collections.sort():
[Jignesh, Kritesh, Mahesh, Nilesh, Suresh, Yogesh, Sumesh, Gitesh, Priyesh]

Explanation: The subList() method belongs to the ArrayList class. It takes two arguments the first argument accepts the starting index, and the second argument accepts the ending index. The element at the ending index is always excluded in the sorting. Hence, in our case, sorting will take place from 0th position to the 4th one.

Sorting a List in Descending Order

Sorting in descending order in lists is quite similar to arrays. Again, we are using the Collections.reverseOrder() method. Let’s create a Java program that sorts the list in descending order.

Filename: SortingExample4.java

// Importing classes ArrayList and Collections of the sub-package util.
import java.util.ArrayList;
import java.util.Collections;
public class SortingExample4
{             
public static void main(String argvs[])
{
               // Creating an ArrayList of strings
               ArrayList<String> arLi = new ArrayList<String>();
               // Adding elements to the list
               arLi.add("Kritesh");
               arLi.add("Suresh");
               arLi.add("Mahesh");
               arLi.add("Jignesh");
               arLi.add("Nilesh");
               arLi.add("Yogesh");
               arLi.add("Sumesh");
               arLi.add("Gitesh");
               arLi.add("Priyesh");
               // Sorting in descending order
               Collections.sort(arLi, Collections.reverseOrder());
               // Displaying results
                System.out.printf("Modified list after the effect of Collections.sort(): \n" + arLi);
}
}

Output:

Modified list after the effect of Collections.sort():
[Yogesh, Suresh, Sumesh, Priyesh, Nilesh, Mahesh, Kritesh, Jignesh, Gitesh]

Explanation: Nothing special here! Very much similar to achieve descending order in arrays.

Comparison between Collections.sort() and Arrays.sort()

In the above Java programs, we have used both sort() methods of the classes Collections and Arrays. Let’s discuss what is the difference between them.

We have seen Collections.sort() works well on the lists. However, deep inside Collections.sort() also calls Arrays.sort(). But, before calling Arrays.sort(), Collections.sort() first do the conversion of the input List into an Array then sorting starts.

Thus, Collections.sort() takes one more step as compared to Arrays.sort(). Hence, Collections.sort() is a bit slow as compared to Arrays.sort(). Since Arrays.sort() is called in both the sorting technique, therefore, the sorting algorithm is also the same in both cases. In recent versions of Java, the Timsort algorithm is used for sorting. Timsort is a hybrid sorting algorithm. It is based upon Insertion sort and Merge sort. We will be discussing Merge sort as well as Insertion sort later in detail.


Related Topics

Radix Sort in Java

Radix Sort in Java Radix sort in Java uses the digits of the numbers given in the sorted array to sort the numbers. The radix sort uses the place value of...

5 minutes read.

How Many Ways to Create Objects in Java

Introduction Java comes under the category of object-oriented programming languages. Since it is object-oriented, everything in Java is considered an object. Java is a diverse programming language that is designed to...

6 minutes read.

Prime Number Program in Java Using a Scanner

In Java, a prime number is one that can only be divided by one or by itself and is greater than one. In other words, only one or itself can...

3 minutes read.

How to install Java in Windows 10

To make programs that can run on our systems, we need to install the programming language related software in our systems. Different programming language requires a different type of software aka...

6 minutes read.

Java String charAt() method

It returns the char value present in the string at the specified index. Here, index value can not be greater than length() -1. Syntax: public char charAt (int index) Parmeters It accepts only...

3 minutes read.

Resultset in java

Resultset: A result set is an interface that is present in the package java.sql and the resultset is used to store the data that are returned from the database table after...

5 minutes read.

Java Serialization

JAVA SERIALIZATION Serialization is a process by which objects can be represented as a sequence of bytes. These bytes have information about object's data, object's type and datatypes of members in...

3 minutes read.

How to Convert String to Integer in Java

How to convert String to int in Java You need to convert String into int if you want to perform a mathematical operation on string which contains digits. To do so,...

3 minutes read.

Application of Array in Java

In this article we are going to acknowledge about what the array is, types of arrays and their applications. What is an array? An array is often a set of interrelated elements...

4 minutes read.

Minimum Number of Platforms Required for a Railway Station

The train station problem is one of the most significant problems typically posed in the programming round interview to gauge a candidate's aptitude for logic and problem-solving. Problem of Railway Station The...

6 minutes read.

Java Integer numberOfTrailingZeros() method

The numberOfTrailingZeros()  method of Java Integer class returns the total number of zero bits following the lowest-order one-bit in the 2’s complement binary representation of the specified int value. Syntax public static...

1 minute read.

Java Math cosh() Method

The cosh() method of Math class returns the first hyperbolic cosine((e+e)/2) of a double value. Syntax: public static double cosh(double x) Parameters: The parameter ‘x’ represents the number whose hyperbolic cosine is to be...

2 minutes read.

How to Convert int to long in Java

How to Convert int to long in Java When two variables of different types are involved in the single expression, Java compiler uses built-in library function to convert the variable to...

2 minutes read.

if-else Program in Java

if-else Program in Java The if-else program in Java controls which code snippet will execute. The if-else program is very basic and yet very important. Because it checks how well one...

19 minutes read.

Difference between throw and throws in java

This article shows you the core difference between “throw” and “throws”keywords in Java programming language.The throw keyword tells Java you want another part of the code to deal withthe exception,...

2 minutes read.

Method and Block Synchronization in Java

The Synchronization is performed in multi-threading concept. The multi-threading is a concept of parallel running of a program for the execution. In the multi-threading concept, the threads are run by...

3 minutes read.

Activity selection problem in Java

The activity selection problem is a multiple objective problem hat requires choosing non-conflicting tasks to complete within a specific amount of time from a list of tasks identified by a...

5 minutes read.

ConcurrentSkipListSet in Java

ConcurrentSkipListSet is a class that is a part of collection framework in Java.It has been available since Java version 1.6. ConcurrentSkipListSet  is a scalable concurrent NavigableSet implementation based on a ConcurrentSkipListMap.The...

16 minutes read.

Java copy file

There are for the most part 3 methods for duplicating documents utilizing java language. They are as given underneath: Utilizing File StreamUtilizing FileChannel ClassUtilizing Files class. 1. Using File Stream: Here we are...

5 minutes read.

Java file Reader

File Reader: It is used to read the data from files. This class inherits the properties from Input Stream Reader Class. File Reader is for reading characters from the file. Input Stream: Java.io...

4 minutes read.