Skip to content
Related Articles

Related Articles

Improve Article

Sort an array of strings according to string lengths using Map

  • Last Updated : 08 Aug, 2019

Given an array of strings, we need to sort the array in increasing order of string lengths, using Map Data Structure.

Examples:

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Input: str[] = {“GeeksforGeeeks”, “I”, “from”, “am”}
Output: I am from GeeksforGeeks



Input: str[] = {“You”, “are”, “beautiful”, “looking”}
Output: You are looking beautiful

Approach: The given approach is for Java using TreeMap

Below is the implementation of the above approach:




// Java program to sort an Array of
// Strings according to their lengths
// using Map
  
import java.util.*;
import java.util.Map.Entry;
import java.io.*;
  
public class GFG {
  
    // Function to Sort the array of string
    // according to lengths using Map
    static String[] sort(String[] str, int n)
    {
        TreeMap<Integer, ArrayList<String> > map
            = new TreeMap<Integer, ArrayList<String> >();
  
        for (int i = 0; i < n; i++) {
  
            map.putIfAbsent(str[i].length(),
                            new ArrayList<String>());
            map.get(str[i].length()).add(str[i]);
        }
  
        int temp = 0;
  
        for (Entry<Integer, ArrayList<String> >
                 e : map.entrySet()) {
  
            for (int i = 0; i < e.getValue().size(); i++) {
  
                str[temp] = e.getValue().get(i);
                temp++;
            }
        }
        return str;
    }
  
    // Function to print the sorted array of string
    static void printArraystring(String str[], int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(str[i] + " ");
    }
  
    // Driver function
    public static void main(String args[])
    {
        String[] arr = { "GeeksforGeeks",
                         "I", "from", "am" };
        int n = arr.length;
  
        // Function to perform sorting
        arr = sort(arr, n);
  
        // Calling the function to print result
        printArraystring(arr, n);
    }
}
Output:
I am from GeeksforGeeks



My Personal Notes arrow_drop_up
Recommended Articles
Page :