Updated April 19, 2023
Introduction to Sort String in Java
Sorting a string in Java is something which is not in-built Java feature in which direct method is available within Java library to sort string though Java does provide techniques to sort array of elements by using Arrays.sort. Using few different methods which are provided by Java library we can sort in Java easily and sorting a string has various different uses cases in any Java application.
How to Sort String in Java Using Various Ways?
It has 2 major techniques which can be used by developer depending on the use case.
- Technique 1: Using Array.sort().
- Technique 2: Using custom comparator to sort the string in Java.
- Technique 3: Using Java 8 streams features along with Strings.chars.
1. Technique 1 – Using Array.sort()
This is a very simple and straight forward technique. The way we sort array of element in Java similar way we and similar logic will be applied.
To implement this technique below are the steps and an example to this sorting:
- Step 1: Get the input String from the user and convert the input String to Array of Characters using Arrays.toCharArray() method which is present in java.util.Arrays
- Step 2: Apply natural sorting to this newly created array of characters using Arrays.sort method which is also present in same jar java.util.Arrays.
- Step 3: Convert this sorted array of characters back to string using Java string class and store the newly created string in string object as strings are immutable
Example:
Code:
import java.util.Arrays;
import java.util.Scanner;
public class SortString {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.println("Input String Value which should be sorted : ");
String inputString = scanner.nextLine();
char arrayOfCharacters[] = inputString.toCharArray(); // Step 1
Arrays.sort(arrayOfCharacters); // Step 2
String sortedString = new String(arrayOfCharacters); // Step 3
System.out.println("Before Sorting : " + inputString);
System.out.println("After Sorting : " + sortedString);
}
}
Output:
Limitations:
- It is ideally done by Java framework using the ASCII value of each character which is present in the string.
- As a result this technique should be used only incase the string sorting which is required is case sensitive which means as the ASCII value of upper case characters is less than lower case characters then sorting would not be proper in case your string has both case characters i.e mixed String.
Example:
Output:
2. Technique 2 – Using custom comparator
This technique is used mainly when the input String can be of mixed characters with lowercase as well as upper case. This is not a straight forward technique as above and requires some bit of more coding. We will be using the same array sorting technique provided by Java but along with that we will use comparator which will help us compare each characters in the string.
To implement this technique below are the steps and an example to this type of string sorting in Java.
- Step 1: Get the input string from the user and convert the input string to array of characters using Java for loop feature.
- Step 2: Apply Java sorting to this newly created array of characters using Arrays.sort method along with comparator which will ignore casing during sorting and this is present in same jar java.util.Arrays.
- Step 3: Convert this sorted array of characters back to string using Java StringBuilder class and no need to store the newly created string in string object as StringBuilder is mutable.
Example:
Code:
import java.util.Arrays;
import java.util.Scanner;
import java.util.Comparator;
public class SortString {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("Input a String Value which should be sorted : ");
String inputString = scanner.nextLine();
Character arrayOfCharacters[] = new Character[inputString.length()];
for (int i = 0; i < inputString.length(); i++) {
arrayOfCharacters[i] = inputString.charAt(i); // Step 1
}
Arrays.sort(arrayOfCharacters, new Comparator<Character>(){ // Step 2
@Override
public int compare(Character c1, Character c2)
{
return Character.compare(Character.toLowerCase(c1),
Character.toLowerCase(c2));
}
});
StringBuilder outputString = new StringBuilder(arrayOfCharacters.length);
for (Character c : arrayOfCharacters)
outputString.append(c.charValue()); // Step 3
System.out.println("Before Sorting : " + inputString);
System.out.println("After Sorting considering casing: " + outputString.toString());
}
}
Output:
Limitations:
- This sorting technique is an ideal way of doing sorting in Java where the input string can be any value with upper and lower case characters.
- There is no as such limitations to this technique of sorting but it is a bit lengthy code to implement.
3. Technique 3 – Using Java 8 streams features along with Strings.chars method
This technique is a new technique with minimal line of code and using Java 8 Stream features along with String.chars method which comes inline with Java 8 only. So make sure when you apply this technique your Java application used mainly when the input string can be of mixed characters with lowercase as well as upper case. This is not a straight forward technique as above and requires some bit of more coding. We will be using the same Array sorting technique provided by Java but along with that we will use comparator which will help us compare each characters in the string.
Conclusion
Sorting a String in Java is very easy and comes with lot of different approaches and developer can use any of these depending on the requirement of the application. It varies from 2 liner code to writing a whole new method to sort and also allows to sort a string by ignore the case as well.
Recommended Articles
This is a guide to Sort String in Java. Here we discuss the introduction and how to sort string in java using various ways? You may also have a look at the following articles to learn more –