import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main
( String[] args
) { String[] dictionary
= new String[] {"SAD",
"PAD",
"SAP",
"BAD",
"SIT"}; System.
out.
println( "Before sort dictionary: " + Arrays.
toString(dictionary
) ); Arrays.
sort(dictionary, dialPadNumCompare
); System.
out.
println( "After sort dictionary: " + Arrays.
toString(dictionary
) ); }
public static Comparator<String> dialPadNumCompare = new Comparator<String>(){
@Override
int inta = stringToInt(a);
int intb = stringToInt(b);
if (inta == intb)
return a.compareTo(b);
return inta - intb;
}
};
public static int stringToInt
(String msg
){ int out = 0;
for (int i = 0; i < msg.length(); i++ ){
out *= 10;
out += charToDigit(msg.charAt(i));
}
return out;
}
public static int charToDigit(char a){
if (a > ('A' - 1) && a <= 'C'){
return 2;
}
if (a > 'C' && a <= 'F'){
return 3;
}
if (a > 'F' && a <= 'I'){
return 4;
}
if (a > 'I' && a <= 'L'){
return 5;
}
if (a > 'L' && a <= 'O'){
return 6;
}
if (a > 'O' && a <= 'S'){
return 7;
}
if (a > 'S' && a <= 'V'){
return 8;
}
if (a > 'V' && a <= 'Z'){
return 9;
}
return 0;
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkgewoJCVN0cmluZ1tdIGRpY3Rpb25hcnkgPSBuZXcgU3RyaW5nW10geyJTQUQiLCAiUEFEIiwgIlNBUCIsICJCQUQiLCAiU0lUIn07CgkJU3lzdGVtLm91dC5wcmludGxuKCAiQmVmb3JlIHNvcnQgZGljdGlvbmFyeTogIiArIEFycmF5cy50b1N0cmluZyhkaWN0aW9uYXJ5KSApOwoJICAgIEFycmF5cy5zb3J0KGRpY3Rpb25hcnksIGRpYWxQYWROdW1Db21wYXJlKTsKCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJBZnRlciBzb3J0IGRpY3Rpb25hcnk6ICIgKyBBcnJheXMudG9TdHJpbmcoZGljdGlvbmFyeSkgKTsKCX0KCXB1YmxpYyBzdGF0aWMgQ29tcGFyYXRvcjxTdHJpbmc+IGRpYWxQYWROdW1Db21wYXJlID0gbmV3IENvbXBhcmF0b3I8U3RyaW5nPigpewoJICAgIEBPdmVycmlkZQoJICAgIHB1YmxpYyBpbnQgY29tcGFyZShTdHJpbmcgYSwgU3RyaW5nIGIpewoJICAgICAgICBpbnQgaW50YSA9IHN0cmluZ1RvSW50KGEpOwoJICAgICAgICBpbnQgaW50YiA9IHN0cmluZ1RvSW50KGIpOwoJICAgIAlpZiAoaW50YSA9PSBpbnRiKQoJICAgICAgICAgICAgcmV0dXJuIGEuY29tcGFyZVRvKGIpOwoJICAgICAgICByZXR1cm4gaW50YSAtIGludGI7CgkgICAgfQoJfTsKCXB1YmxpYyBzdGF0aWMgaW50IHN0cmluZ1RvSW50KFN0cmluZyBtc2cpewoJICAgIGludCBvdXQgPSAwOwoJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbXNnLmxlbmd0aCgpOyBpKysgKXsKCSAgICAgICAgb3V0ICo9IDEwOwoJICAgICAgICBvdXQgKz0gY2hhclRvRGlnaXQobXNnLmNoYXJBdChpKSk7CgoJICAgIH0KCSAgICByZXR1cm4gb3V0OwoJfQoJcHVibGljIHN0YXRpYyBpbnQgY2hhclRvRGlnaXQoY2hhciBhKXsKCSAgICBpZiAoYSA+ICgnQScgLSAxKSAmJiBhIDw9ICdDJyl7CgkgICAgICAgIHJldHVybiAyOwoJICAgIH0KCSAgICBpZiAoYSA+ICdDJyAmJiBhIDw9ICdGJyl7CgkgICAgICAgIHJldHVybiAzOwoJICAgIH0KCSAgICBpZiAoYSA+ICdGJyAmJiBhIDw9ICdJJyl7CgkgICAgICAgIHJldHVybiA0OwoJICAgIH0KCSAgICBpZiAoYSA+ICdJJyAmJiBhIDw9ICdMJyl7CgkgICAgICAgIHJldHVybiA1OwoJICAgIH0KCSAgICBpZiAoYSA+ICdMJyAmJiBhIDw9ICdPJyl7CgkgICAgICAgIHJldHVybiA2OwoJICAgIH0KCSAgICBpZiAoYSA+ICdPJyAmJiBhIDw9ICdTJyl7CgkgICAgICAgIHJldHVybiA3OwoJICAgIH0KCSAgICBpZiAoYSA+ICdTJyAmJiBhIDw9ICdWJyl7CgkgICAgICAgIHJldHVybiA4OwoJICAgIH0KCSAgICBpZiAoYSA+ICdWJyAmJiBhIDw9ICdaJyl7CgkgICAgICAgIHJldHVybiA5OwoJICAgIH0KCSAgICByZXR1cm4gMDsKCX0KfQ==
Before sort dictionary: [SAD, PAD, SAP, BAD, SIT]
After sort dictionary: [BAD, PAD, SAD, SAP, SIT]