Saturday, December 14, 2013

Sort the list of strings based on the length of string

PROBLEM STATEMENT


Provide an API to sort a list of String based on the length of individual Strings.

APPROACH

- - Convert the list to TREEMAP with length of string as key and actual String as value
 RULED OUT
If the supplied list has more than one String of equal length, we will not be able to hold all the strings in the map.

- - Implement a Comparator and use in Collection.sort method
WORKED OUT

Here are the classes:


package org.praveen.java.learning;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class StringLengthSorter{

    /**
     * @param args
     */
    public static void main(String[] args) {
        List strList = new ArrayList();
        strList.add("package");
        strList.add("learning");
        strList.add("import");
        strList.add("java");
        strList.add(".");
        strList.add("ArrayList");
        strList.add("util");
        strList.add("StringLengthSorter");
        strList.add("strList");
        strList.add("main");
        strList.add("void");
        strList.add("static");
        strList.add("ndtv");
        strList.add("bhasoor");
        strList.add("gg");
        strList.add("dyd");
        strList.add("jjfkd");
        strList.add("gsdjhgkd");
        System.out.println(strList);
        Collections.sort(strList, new StringLengthComparator());
        System.out.println(strList);
    }

   
}

And the COMPARATOR used above:


package org.praveen.java.learning;

import java.util.Comparator;

public class StringLengthComparator implements Comparator{

    @Override
    public int compare(String o1, String o2) {
        if(o1.length() > o2.length()){
            return 1;
        } else if (o2.length() > o1.length()) {
            return -1;
        } else {
            return 0;
        }
    }


}

No comments:

Post a Comment