Mam ten kod. Sortuje poprawnie w języku francuskim i rosyjskim. Użyłem Locale.US i wydaje się, że to prawda. Czy to rozwiązanie działa dobrze we wszystkich językach? Czy działa z innymi językami? Na przykład: chiński, koreański, japoński ... Jeśli nie, jakie jest lepsze rozwiązanie?Czy istnieje sposób sortowania ciągów we wszystkich językach?
public class CollationTest {
public static void main(final String[] args) {
final Collator collator = Collator.getInstance(Locale.US);
final SortedSet<String> set = new TreeSet<String>(collator);
set.add("abîmer");
set.add("abîmé");
set.add("aberrer");
set.add("abhorrer");
set.add("aberrance");
set.add("abécédaire");
set.add("abducteur");
set.add("abdomen");
set.add("государственно-монополистический");
set.add("гостить");
set.add("гостевой");
set.add("гостеприимный");
set.add("госпожа");
set.add("госплан");
set.add("господи");
set.add("господа");
for(final String s : set) {
System.out.println(s);
}
}
}
Aktualizacja: Niestety, nie wymaga ten zestaw musi zawierać wszystkie języki w kolejności. Mam na myśli, że ten zestaw zawiera jeden język i poprawnie sortuje w każdym języku.
public class CollationTest {
public static void main(final String[] args) {
final Collator collator = Collator.getInstance(Locale.US);
final SortedSet<String> set = new TreeSet<String>(collator);
// Sorting in French.
set.clear();
set.add("abîmer");
set.add("abîmé");
set.add("aberrer");
set.add("abhorrer");
set.add("aberrance");
set.add("abécédaire");
set.add("abducteur");
set.add("abdomen");
for(final String s : set) {
System.out.println(s);
}
// Sorting in Russian.
set.clear();
set.add("государственно-монополистический");
set.add("гостить");
set.add("гостевой");
set.add("гостеприимный");
set.add("госпожа");
set.add("госплан");
set.add("господи");
set.add("господа");
for(final String s : set) {
System.out.println(s);
}
}
}
I nie sądzę, że można sensownie zdefiniować kolejność słów inter-językowych. – Flexo
Nawet jeśli zestaw zawiera tylko jeden język, nadal musisz wybrać poprawne 'Locale' dla' Collator' za każdym razem, gdy chcesz sortować. –