sort - Tipo de matriz Java UTF-8
sort string java (2)
Quiero ordenar un ArrayList<String>
pero el problema son mis caracteres en el idioma nativo - mi alfabeto es así: a, ą, b, c, č, d, e, f ... z, ž
. Como puede ver, el carácter z
es el segundo desde el final y ą
es el segundo en el alfabeto, por lo que después de clasificar mi matriz, se ordena de forma incorrecta. Todos mis caracteres en el idioma nativo se mueven al final de la matriz. Ejemplo:
package lt;
import java.util.ArrayList;
import java.util.Collections;
public class test {
public static void main(String[] args) {
List<String> items = new ArrayList<>();
items.add("bbc");
items.add("ąbc");
items.add("abc");
items.add("zzz");
System.out.println("Unsorted: ");
for(String str : items) {
System.out.println(str);
}
Collections.sort(items);
System.out.println();
System.out.println("Sorted: ");
for(String str : items) {
System.out.println(str);
}
}
}
Salida:
Unsorted:
bbc
ąbc
abc
zzz
Sorted:
abc
bbc
zzz
ąbc
Debiera ser:
Sorted:
abc
ąbc
bbc
zzz
Deberías usar la clase Collator .
Por ejemplo
Locale lithuanian = new Locale("lt_LT");
Collator lithuanianCollator = Collator.getInstance(lithuanian);
Y luego ordena la colección usando este clasificador
Collections.sort(theList, lithuanianCollator);
Puede usar Collator para realizar comparaciones de cadenas sensibles a la configuración regional.