In this article, we will discuss how to sort String[] Arrays by its length in Ascending-order and Descending-order
Sorting String[] Arrays by its length:
- Using TreeSet (inter-conversion constructor)
 - Using Arrays.sort() method
 
1. Using TreeSet :
- There is a String[] Arrays with different length in random-order which needs to be sorted according to String length
 - Ascending-order sorting :
- Create TreeSet passing Comparator as constructor-argument with ascending-order of String length logic
 - Add original String[] Arrays elements to newly created TreeSet using addAll() method after converting String[] Arrays into List
 
 - Descending-order sorting :
- Create TreeSet passing Comparator as constructor-argument with descending-order of String length logic
 
- Add original String[] Arrays elements to newly created TreeSet using addAll() method after converting String[] Arrays into List
 
 - Print TreeSet object to the console for both ascending-order and descending-order of String[] Arrays in accordance with its String length
 - Note: If there are multiple Strings of same length in the String[] Arrays then this will discard elements of same length as Set doesn’t allows duplicates
 - Check below example 2 if there are multiple Strings of same length
 
SortingStringArraysByItsLengthUsingTreeSet.java
package in.bench.resources.sorting.string.arrays;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
public class SortingStringArraysByItsLengthUsingTreeSet {
	public static void main(String[] args) {
		// 1. names with different length
		String[] names = new String[] {
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
		};
		// 1.1 print to console
		System.out.println("Original String[] Arrays :- \n" 
				+ Arrays.toString(names) + "\n");
		// 2. sorting String[] Arrays in Ascending-order
		Set<String> treeSetAsc = new TreeSet<>(new Comparator<String>() {
			@Override
			public int compare(String str1, String str2) {
				return str1.length() - str2.length();
			}
		});
		// 2.1 add String[] Arrays items to TreeSet
		treeSetAsc.addAll(Arrays.asList(names));
		// 2.2 print ascending-order sorted Strings by its Length
		System.out.println("\nAscending-order Sorted String[] Arrays by its Length :- \n" 
				+ treeSetAsc + "\n");
		// 3. sorting String[] Arrays in Descending-order
		Set<String> treeSetDesc = new TreeSet<>(new Comparator<String>() {
			@Override
			public int compare(String str1, String str2) {
				return str2.length() - str1.length();
			}
		});
		// 3.1 add String[] Arrays items to TreeSet
		treeSetDesc.addAll(Arrays.asList(names));
		// 3.2 print descending-order sorted Strings by its Length
		System.out.print("\nDescending-order Sorted String[] Arrays by its Length :- \n" 
				+ treeSetDesc);
	}
}
Output:
Original String[] Arrays :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]
Ascending-order Sorted String[] Arrays by its Length :- 
[Bob, Bond, Alice, Spider, Whitman, Einstein]
Descending-order Sorted String[] Arrays by its Length :- 
[Einstein, Whitman, Spider, Alice, Bond, Bob]
2. Using Arrays.sort() method :
- Arrays.sort() method accepts 2 input-arguments where,
- 1st argument is the actual String[] Arrays to be sorted
 - 2nd argument is the Comparator for sorting
 
 - For Sorting, 
- Override/implement compare() method of Comparator interface
 - Inside method implementation return difference of String length
 
 - For Ascending-order sorting, 
- subtract 2nd String length from the 1st String length
 - Syntax:- str1.length() – str2.length();
 
 - For Descending-order sorting, 
- subtract 1st String length from the 2nd String length
 - Syntax:- str2.length() – str1.length();
 
 - Print both ascending-order and descending-order sorted String[] Arrays in accordance with its String length to the console
 
SortingStringArraysByItsLengthUsingArraysSortMethod.java
package in.bench.resources.sorting.string.arrays;
import java.util.Arrays;
import java.util.Comparator;
public class SortingStringArraysByItsLengthUsingArraysSortMethod {
	public static void main(String[] args) {
		// 1. names with different length
		String[] names = new String[] {
				"Bond",
				"James",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Binny",
				"Spider",
				"Lee",
				"Anderson"
		};
		// 1.1 print to console
		System.out.println("Original String[] Arrays :- \n" 
				+ Arrays.toString(names) + "\n");
		// 2. sorting String[] Arrays in Ascending-order
		Arrays.sort(names, new Comparator<String>() {
			@Override
			public int compare(String str1, String str2) {
				return str1.length() - str2.length();
			}
		});
		// 2.1 print ascending-order sorted Strings by its Length
		System.out.println("\nAscending-order Sorted String[] Arrays "
				+ "by its Length :- \n" + Arrays.toString(names) + "\n");
		// 3. sorting String[] Arrays in Descending-order
		Arrays.sort(names, new Comparator<String>() {
			@Override
			public int compare(String str1, String str2) {
				return str2.length() - str1.length();
			}
		});
		// 3.1 print descending-order sorted Strings by its Length
		System.out.print("\nDescending-order Sorted String[] Arrays "
				+ "by its Length :- \n" + Arrays.toString(names));
	}
}
Output:
Original String[] Arrays :- 
[Bond, James, Einstein, Alice, Whitman, Bob, Binny, Spider, Lee, Anderson]
Ascending-order Sorted String[] Arrays by its Length :- 
[Bob, Lee, Bond, James, Alice, Binny, Spider, Whitman, Einstein, Anderson]
Descending-order Sorted String[] Arrays by its Length :- 
[Einstein, Anderson, Whitman, Spider, James, Alice, Binny, Bond, Bob, Lee]
Related Articles:
- Byte Arrays sorting
 - char Arrays sorting
 - short Arrays sorting
 - Integer Arrays sorting
 - Float Arrays sorting
 - Double Arrays sorting
 - Long Arrays sorting
 - String Arrays sorting
 - Java – How to Sort Arrays in Ascending and Descending order ?
 - Java – String Arrays sorting in ascending & descending order
 - Java – Sorting after merging two String[] Arrays
 - Java – Sorting Arrays using Comparable and Comparator interface
 - Java – How to Sort String[] arrays by its length in Ascending and Descending order ?
 - Java – How to Sort String List by its length in Ascending and Descending order ?
 
References:
- https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
 - https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
 - https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html
 - https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html
 
Happy Coding !!
Happy Learning !!