/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String[] array
= {"string-a01",
"string-a20",
"string-a100",
"string-b01",
"string-b20",
"string-b100",
"string-c01",
"string-c20",
"string-c100"};
Arrays.
sort(array,
new Comparator
<String
>() { int firstTrailingDigit
(String s
) { int i = s.length();
while (i
> 0 && Character.
isDigit(s.
charAt(i
- 1))) { --i;
}
return i;
}
int ftdA = firstTrailingDigit(a);
int ftdB = firstTrailingDigit(b);
// Get the leading strings, and compare.
String sA
= a.
substring(0, ftdA
); String sB
= b.
substring(0, ftdB
); int compareStrings = sA.compareTo(sB);
if (compareStrings != 0) {
// If they're not equal, return the result of the comparison.
return compareStrings;
}
// Get the trailing numbers from the strings, and compare.
int iA
= Integer.
parseInt(a.
substring(ftdA
)); int iB
= Integer.
parseInt(b.
substring(ftdB
)); }
});
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmdbXSBhcnJheSA9IHsic3RyaW5nLWEwMSIsInN0cmluZy1hMjAiLCJzdHJpbmctYTEwMCIsInN0cmluZy1iMDEiLCJzdHJpbmctYjIwIiwic3RyaW5nLWIxMDAiLCJzdHJpbmctYzAxIiwic3RyaW5nLWMyMCIsInN0cmluZy1jMTAwIn07CgogICAgICAgIEFycmF5cy5zb3J0KGFycmF5LCBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCkgewogICAgICAgIAlpbnQgZmlyc3RUcmFpbGluZ0RpZ2l0KFN0cmluZyBzKSB7CiAgCQkJCWludCBpID0gcy5sZW5ndGgoKTsKICAJCQkJd2hpbGUgKGkgPiAwICYmIENoYXJhY3Rlci5pc0RpZ2l0KHMuY2hhckF0KGkgLSAxKSkpIHsKICAgIAkJCQktLWk7CQogIAkJCQl9CiAgCQkJCXJldHVybiBpOwoJCQl9CgkJCQoJCQlAT3ZlcnJpZGUgcHVibGljIGludCBjb21wYXJlKFN0cmluZyBhLCBTdHJpbmcgYikgewogIAkJCQlpbnQgZnRkQSA9IGZpcnN0VHJhaWxpbmdEaWdpdChhKTsKICAJCQkJaW50IGZ0ZEIgPSBmaXJzdFRyYWlsaW5nRGlnaXQoYik7CgogIAkJCQkvLyBHZXQgdGhlIGxlYWRpbmcgc3RyaW5ncywgYW5kIGNvbXBhcmUuCiAgCQkJCVN0cmluZyBzQSA9IGEuc3Vic3RyaW5nKDAsIGZ0ZEEpOwogIAkJCQlTdHJpbmcgc0IgPSBiLnN1YnN0cmluZygwLCBmdGRCKTsKICAJCQkJaW50IGNvbXBhcmVTdHJpbmdzID0gc0EuY29tcGFyZVRvKHNCKTsKICAJCQkJaWYgKGNvbXBhcmVTdHJpbmdzICE9IDApIHsKICAgIAkJCQkvLyBJZiB0aGV5J3JlIG5vdCBlcXVhbCwgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uCiAgICAJCQkJcmV0dXJuIGNvbXBhcmVTdHJpbmdzOwogIAkJCQl9CgogIAkJCQkvLyBHZXQgdGhlIHRyYWlsaW5nIG51bWJlcnMgZnJvbSB0aGUgc3RyaW5ncywgYW5kIGNvbXBhcmUuCiAgCQkJCWludCBpQSA9IEludGVnZXIucGFyc2VJbnQoYS5zdWJzdHJpbmcoZnRkQSkpOwogIAkJCQlpbnQgaUIgPSBJbnRlZ2VyLnBhcnNlSW50KGIuc3Vic3RyaW5nKGZ0ZEIpKTsKICAJCQkJcmV0dXJuIEludGVnZXIuY29tcGFyZShpQSwgaUIpOwoJCQl9CiAgICAgICAgfSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcoYXJyYXkpKTsKCX0KfQ==
[string-a01, string-a20, string-a100, string-b01, string-b20, string-b100, string-c01, string-c20, string-c100]