私はこのコードを持っています。フランス語とロシア語で正しく並べ替えられます。私はLocale.USを使いました。それは正しいようです。このソリューションは、すべての言語で正しく機能しますか?それは他の言語でも使えますか?たとえば、中国語、韓国語、日本語...そうでない場合は、より良い解決策は何ですか?すべての言語で文字列をソートする方法はありますか?
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);
}
}
}
更新: 申し訳ありませんが、私がために、すべての言語が含まれている必要があり、このセットを必要としません。私はこのセットが1つの言語を含み、各言語で正しく分類されていることを意味します。
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);
}
}
}
を次のようにフランスの丁合いは、正しく単語の配列をソートします。 – Flexo
セットに1つの言語しか含まれていなくても、ソートするたびに 'Collator'の正しい' Locale'を選択する必要があります。 –