Class where we determine the order of comparison:
class StringLengthSort implements Comparator<String>{ @Override public int compare(String o1, String o2) { if(o1.length() > o2.length()){ return 1; }else{ if(o1.length() < o2.length()){ return -1; }else{ return 0; } } } }
or through lambda, the code will be slightly shorter:
Comparator<String> comprator = (o1,o2) -> o1.length() - o2.length();
Testing:
public static void main(String[] args) { String [] names = {"Deaaaaaaan", "Deaaan", "Deaaaaaaaan", "Dean", "Deaaaaaan", "Deaan", "Deaaaaaaaaan", "Deaaaan", "Deaaaaan"}; Comparator<String> stringLengthComparator = new StringLengthSort(); for(String str : names){ System.out.println(str); } Arrays.sort(names, stringLengthComparator); // применяем сортировку System.out.println("\nотсортировано\n"); for(String str : names){ System.out.println(str); } }
Conclusion:
Deaaaaaaan Deaaan Deaaaaaaaan Dean Deaaaaaan Deaan Deaaaaaaaaan Deaaaan Deaaaaan отсортировано Dean Deaan Deaaan Deaaaan Deaaaaan Deaaaaaan Deaaaaaaan Deaaaaaaaan Deaaaaaaaaan