3

リスト インターフェイスで Locale オブジェクトを並べ替えたいと思います。以下は私が使用しているコードです。 List<Locale> list = LocaleUtils.availableLocaleList(); LocaleUtils.availableLocaleList()これを呼び出すと、Java で使用可能なロケールのリストを取得します。これlocaleutilsは のクラスですorg.apache.commons.lang.LocaleUtils

以下のコードでコンパレータ インターフェイスを使用しようとしています。

            List<Locale> locale = LocaleUtils.availableLocaleList();
    Comparator<Locale> comparator = new Comparator<Locale>() {

        @Override
        public int compare(Locale o1, Locale o2) {
            return o1.toString().compareTo(o2.toString());
        }
    };

    Collections.sort(list, comparator);
    System.out.println(list);

ソートする前にすべてのロケールを印刷できます。しかし、以下の例外が発生しているロケール オブジェクトを並べ替えることができません。

この問題を整理するのを手伝ってください。

どんな体でも助けてください。ありがとうございます

4

1 に答える 1

4

変更不可能なリストを使用しています。要素を変更可能なリストに入れると、並べ替えることができます。それ以外の場合は、要素を新しいリストに入れる独自の並べ替えアルゴリズムを使用できます。このアプローチはより高速になる可能性があります。代わりにこれを試してください:

List<Locale> localeList = new ArrayList<Locale>(list);
Collections.sort(localeList, comparator);
于 2013-06-23T19:05:05.117 に答える