strings sort alphabetically java sorting utf-8 collation

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.