S pomlčkami to není číslo a bez pomlček to není číslo. Ale ty nechceš jen odstranit pomlčky, protože pak nerozlišíš "1-02" a "10-2".
String[] publ = {"02-02", "2-03", "1-4"}; // "mm-dd"
System.out.println(Arrays.toString(publ));
Arrays.sort(publ, new Comparator<String>(){
@Override
public int compare(String s1, String s2) {
String[] a1 = s1.split("-");
String[] a2 = s2.split("-");
int x = Integer.parseInt(a1[0]); // mm
int y = Integer.parseInt(a2[0]);
if (x == y) {
x = Integer.parseInt(a1[1]); // dd
y = Integer.parseInt(a2[1]);
}
return x - y;
}
});
System.out.println(Arrays.toString(publ));
[02-02, 2-03, 1-4]
[1-4, 02-02, 2-03]
Samozřejmě nejlepší by bylo to od začátku mít v nějakém normalizovaném/porovnávatelném formátu, než to konvertovat při řazení.