如何使用java中的比较器对列表界面中的语言环境对象列表进行排序

时间:2013-06-23 19:00:58

标签: java

我想在列表界面中对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);

我可以在排序之前打印所有语言环境。但是我无法对我得到以下异常的语言环境对象进行排序。

请你帮我解决这个问题。

任何身体都可以帮助我。 感谢致敬 维杰

1 个答案:

答案 0 :(得分:4)

您正在使用不可修改的列表。如果将元素放在可修改的列表中,则可以对其进行排序。否则,您可以使用自己的排序算法将元素放入新列表中。这种方法可能更快。 试试这个:

List<Locale> localeList = new ArrayList<Locale>(list);
Collections.sort(localeList, comparator);