Existem alguns metodos que estão fora do meu entendimento, por exemplo @overide e abaixo dele entre parenteses duas \ seguidas de um S ("\S") alguem pode me explicar?
obrigado
package kingsort;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class KingSort {
private static final Map<String, Integer> map = new HashMap<String, Integer>();
static {
String[] romanos = new String[] {"I", "II", "III", "IV", "V", "VI", "VII", "VIII","IX"};
for (int i = 0; i < 9; ++i) {
map.put(romanos[i], i + 1);
map.put("X" + romanos[i], i + 1 + 10);
map.put("XX" + romanos[i], i + 1 + 20);
map.put("XXX" + romanos[i], i + 1 + 30);
map.put("XL" + romanos[i], i + 1 + 30);
}
Integer put = map.put("X", 10);
map.put("XX", 20);
map.put("XXX", 30);
map.put("XL", 40);
map.put("L", 50);
}
public String[] getSortedList(String[] kings) {
List<String> list = Arrays.asList(kings);
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String nome1, String nome2) {
String[] simbolo1 = nome1.split("\\s");
String[] simbolo2 = nome2.split("\\s");
if (simbolo1[0].equals(simbolo2[0])) {
return compareOrdinal(simbolo1[1], simbolo2[1]);
} else {
return simbolo1[0].compareTo(simbolo2[0]);
}
}
private int compareOrdinal(String ord1, String ord2) {
int valor1 = map.get(ord1);
int valor2 = map.get(ord2);
if (valor1 > valor2) {
return 1;
} else if (valor1 < valor2) {
return -1;
} else {
return 0;
}
}
});
return list.toArray(new String[0]);
}
public static void main(String[] args) {
KingSort sort = new KingSort();
String[] result = sort.getSortedList(new String[] {"Louis IX", "Louis VIII", "Philippe II", "Richard III", "Richard I", "Richard II", "John X", "John I", "John L", "John V", "Philippe VI", "Jean II", "Charles V", "Charles VI", "Charles VII", "Philip II" });
for (String item : result) {
System.out.println(item);
}
}
}