Setřízení seznamu řetězců dle locale v Javě

Pro seřazení seznamu se v Javě používá třída java.util.Collections a její metoda sort(). Tato metoda je přetížená a má možnost jako paramer mít objekt implementující Comparator, což je rozhraní s metodou compare(objekt_1, objekt_2). Jako Comparator lze tedy použít i instanci třídy Collator, která rozhraní Comparator implementuje. Výhodou Collatoru je to, že umožňuje řetězce porovnávat dle locale. Pokud budeme chtít správně porovnávat a řadit řetězce s českou diakritikou, je třeba použít Collator a české locale.

import java.text.Collator;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;

public class AppStringCompare {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("zelí", "mrkev", "česnek", "petržel", "řepa");
		Collator collator = Collator.getInstance(new Locale("cs", "CZ"));
		Collections.sort(list, collator);
		System.out.println(Arrays.toString(list.toArray()));
	}
}

Výsledek

[česnek, mrkev, petržel, řepa, zelí]

Napsat komentář