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:
- Sort Array in Java
- Array vs ArrayList
- Sort ArrayList
- Sort String
- Sort a List
- Sort a Map
- Sort a Set in Java
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.
Array | ArrayList |
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
- Sort by value
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.