
List paises = ...; Locale locale = ...; Collator c = Collator.getInstance(locale); c.setStrength(Collator.PRIMARY); Collections.sort(paises, new CollatorComparator(c));
Con una clase propia, CollatorComparator, que implementa la interfaz Comparator podemos hacer la ordenación de una lista de cadenas:
import java.util.Comparator;
import java.text.Collator;
public class CollatorComparator implements Comparator {
private Collator collator;
public CollatorComparator(Collator collator) {
this.collator = collator;
}
public int compare(Object o1, Object o2) {
return collator.compare(o1, o2);
}
public boolean equals(Object obj) {
return false;
}
}
Algo importante es la «fuerza» del comprador, que permite ajustar cuales son los caracteres que se consideran diferentes en la comparación. Disponemos de las siguientes posibilidades:
- PRYMARY: Considera como distintos los distintos caracteres («a» vs «b»)
- SECONDARY: Considera como distintos diferentes formas acentuadas («a» vs «á»)
- TERTIARY: Considera como diferentes mayúsculas y minúsculas («a» vs «A»)
- IDENTICAL: Solo se consideran idénticos («a» vs «a»)
java.util.Comparator
java.text.Collator
java.text.RuleBasedCollator