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 valueRULED 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.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