How to Sort Array, ArrayList, String, List, Map and Set in Java?

Last updated on Jun 14,2021 29.6K Views
A technophile with a passion for unraveling the intricate tapestry of the... A technophile with a passion for unraveling the intricate tapestry of the tech world. I've spent over a decade exploring the fascinating world of...

How to Sort Array, ArrayList, String, List, Map and Set in Java?

edureka.co

Sorting is an essential part of any programming language. Java, no doubt is one of the best programming languages. It has various features that make it easy! This article will help you unfold everything about sorting in Java especially, sort Array, ArrayList, String, List, Map and Set in Java.

Below topics are covered in this sorting article:

Let’s begin. :-)

Sort Array in Java

Arrays in Java store one or more values of a specific data type and provide indexed access to store the same in a single variable. Let’s look at the below program to sort an array in Java in ascending order. However, ensure you have Java installed.

Sort Array in Java – Ascending Order


package Edureka;

import java.util.Arrays;

public class SortArray
{ 
public static void main(String[] args) 
{ 
int[] arr = {52,12,2,72,4}; // array of 5 elements
Arrays.sort(arr); 
System.out.printf("Sorted arr[] = %s", 
Arrays.toString(arr)); 
} 
}

Output – Sorted arr[] = [2, 4, 12, 52, 72]

Sort Array in Java – Descending Order


package Edureka;

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

public class SortArray
{
public static void main(String[] args)
{
Integer[] arr = {52,12,2,72,4}; // used Integer[] instead of int as collections
Arrays.sort(arr, Collections.reverseOrder()); // reverseorder() for descending order
System.out.printf("Sorted arr[] = %s",
Arrays.toString(arr));
}
}

Output: Sorted arr[] = [72, 52, 12, 4, 2]

Note: In the above code, I have used Integer[] array instead of int because of collections. This is because reverseOrder() doesn’t support primitive types.

Many people confuse with the concept of arrays and ArrayList in Java. Below table may clear all your doubts.

ArrayArrayList

It is of fixed length

It is of variable-length (dynamic in size)

Supports only primitive data-type

Can add different object and data into the list

Does not support a duplicate addition

Allows addition of duplicate elements

Can traverse only in a forward direction

Can traverse in both forward and backward direction

Size cannot be modified dynamically

Size can be modified dynamically


I hope you are cleared with the difference, let’s move ahead and see how to sort ArrayList in Java.

Sort ArrayList in Java (String) 

Sorting ArrayList in Java can be easily done by using a simple sort() method. Refer the below code to sort ArrayList in Java.


package Edureka;

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

public class sortingarraylist
{	  
    public static void main(String args[]) 
	    {  
	        ArrayList<String>
	            list = new ArrayList<String>(); 
	  
	     // Populate the ArrayList
	     list.add("sorting");
	     list.add("java");
	     list.add("arraylist");
	     list.add("in"); 
	     System.out.println("Unsorted ArrayList: "
	                           + list); // printed unsorted arraylist
	     Collections.sort(list); // sort method for ascending order  
	  
	     System.out.println("Sorted ArrayList "
	                           + "in Ascending order : "
	                           + list); // print sorted arraylist
	    } 
	} 

Output –

Unsorted ArrayList: [sorting, java, arraylist, in]
Sorted ArrayList in Ascending order : [arraylist, in, java, sorting]

Moving ahead with sorting in Java article, let’s see how you can sort integers. Let’s try to implement sorting using a different method i.e using Collections.sort() method.

Sort ArrayList in Java Using Collections (Integers)

You can sort Integer ArrayList using Collections.sort() method.

package Edureka;

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

public class SortingArrayList
{	
	public static void main(String args[]){
	   ArrayList<Integer> arraylist = new ArrayList<Integer>();
	   arraylist.add(48);
	   arraylist.add(2);
	   arraylist.add(19);
	   arraylist.add(22);
	   System.out.println("Before Sorting:"); // before sorting
	   for(int counter: arraylist){
			System.out.println(counter);
		}

	   Collections.sort(arraylist); // function to sort in ascending order 

	   System.out.println("After Sorting:"); // after sorting
	   for(int counter: arraylist){
			System.out.println(counter);
		}
	}
}
 

Output –
Before Sorting:
48
2
19
22
After Sorting:
2
19
22
48

Sort String in Java

String in Java is immutable. There is no direct method to sort a string in Java. You can use Arrays, which has a method CharArray() that will create a char input string and using another method (Arrays.sort(char c[]) , we can easily sort.

package Edureka;

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

public class SortingString
{	
    public static String sortString(String inputString) 
    { 
        char Array1[] = inputString.toCharArray(); // converting input string to char array 
           
        Arrays.sort(Array1); 
          
        return new String(Array1); // return sorted string
    } 
      
    public static void main(String[] args) 
    { 
        String inputString = "Edureka"; 
        String outputString = sortString(inputString); 
          
        System.out.println("Input String : " + inputString); 
        System.out.println("Output String : " + outputString); 
    } 
}  

Output – 
Input String : Edureka
Output String : Eadekru

Sort a List In Java

To sort a list in Java, you can use Collections.sort() method. Refer the following code for more understanding:

package Edureka;

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

public class SortingList
{	
	public static void main(String[] args) 
    
	{
		Integer[] digits = new Integer[] {12,56,89,27,22,4,88,65,36};
    	List<Integer> digitsList = Arrays.asList(digits);
    	
    	
    	Collections.sort(digitsList); // sorted list
    	 
    	System.out.println("Sorted String :" +digitsList);
    } 
}    

Output: Sorted String :[4, 12, 22, 27, 36, 56, 65, 88, 89]

Sort a Map in Java

A Map in Java belongs to Java collection which contains key-value pair. Therefore, a Map can be sorted in two different ways:

Sort by Key:

package Edureka;

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

public class SortingMap
{	
	public static void main(String[] args) 
    
	{
		HashMap<Integer, String> map = new HashMap<>();
        
		map.put(14, "Aayushi");
		map.put(2, "Rachit");
		map.put(30, "Amit");
		map.put(5, "Anamika");
		 
		TreeMap<Integer, String> treeMap = new TreeMap<>(map);
		 
		System.out.println(treeMap);
    } 
}    

Output: {2=Rachit, 5=Anamika, 14=Aayushi, 30=Amit}

Sort by Value:

package Edureka;

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

public class SortingMap  
{	
	public static void main(String[] args) 
    
	{
		HashMap<Integer, String> unSortedMap = new HashMap<>();
    
	unSortedMap.put(14, "Aayushi");
	unSortedMap.put(20, "Rachit");
	unSortedMap.put(60, "Amit");
	unSortedMap.put(70, "Anamika");
	 
	LinkedHashMap<Integer, String> sortedMap = new LinkedHashMap<>();
	 
	unSortedMap.entrySet()
	    .stream()
	    .sorted(Map.Entry.comparingByValue())
	    .forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
	 
	System.out.println(sortedMap);
	}
}    

Output: {14=Aayushi, 60=Amit, 70=Anamika, 20=Rachit}

Moving ahead with sorting in Java, let’s pick up the last topic i.e sort a Set in Java.

Sort Set in Java

A Set in Java is an interface which extends Collections. It is an unordered collection of objects which does not store duplicate values. Now there is no direct method to sort a Set in Java. Now to sort a set, you have to convert a set to List and then use collections.sort() API and again convert back the list to a set. Refer the below code for more understanding:

package Edureka;

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

public class SortSet
{	
	public static void main(String[] args) 
    
	{
		//Unsorted list
		HashSet<Integer> numbersSet = new LinkedHashSet<>(
		        Arrays.asList(12,56,89,27,22,4,88,65,36) );
		 
		List<Integer> numbersList = new ArrayList<Integer>(numbersSet);  //convert set to list
		 
		//Sort the list
		Collections.sort(numbersList);
		 
		numbersSet = new LinkedHashSet<>(numbersList);  //convert list to set
		 
		//Print set to confirm
		System.out.println(numbersSet);
	}
}    

 

Output: [4, 12, 22, 27, 36, 56, 65, 88, 89]

This brings us to the end of our blog on sorting in Java where you have learned how to sort Array, ArrayList, String, Map and Set in Java. I hope you found this blog informative and added value to your knowledge.

Make sure you practice as much as possible and revert your experience.  

Check out the Java Certification Training by Edureka, a trusted online learning company with a network of more than 250,000 satisfied learners spread across the globe. Edureka’s Java J2EE and SOA training and certification course is designed for students and professionals who want to be a Java Developer. The course is designed to give you a head start into Java programming and train you for both core and advanced Java concepts along with various Java frameworks like Hibernate & Spring.

Got a question for us? Please mention it in the comments section of this ‘Sorting in Java: Array, ArrayList, String, Map and Set in Java” and we will get back to you as soon as possible.

Upcoming Batches For Java Course Online
Course NameDateDetails
Java Course Online

Class Starts on 1st March,2025

1st March

SAT&SUN (Weekend Batch)
View Details
BROWSE COURSES
REGISTER FOR FREE WEBINAR Building Robust Applications with Spring Framework