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

标签 java

我想在列表界面中对 Locale 对象进行排序。 下面是我正在使用的代码。 List<Locale> list = LocaleUtils.availableLocaleList(); LocaleUtils.availableLocaleList()在调用这个时,我们得到了 java 中可用语言环境的列表,localeutils是来自 org.apache.commons.lang.LocaleUtils 的类(class).

我正在尝试使用代码下方的比较器接口(interface)。

            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);

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

你能帮我解决这个问题吗?

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

最佳答案

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

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

关于java - 如何在 java 中使用比较器对列表界面中的语言环境对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264212/

相关文章:

java - "ResultSet is from UPDATE: No Data"从 Java 应用程序收到

java - 为 Guava Cache 选择键

Java 8 函数 - 不兼容的类型

java - 如何解决此 UnsatisfiedLinkError?

java - 如何确定数组是否包含 Java 中的特定值?

java - java中存储表格以供引用

java - 抑制 Swing 可见性

java - 如何从 JTextArea 中删除 Ascii 代码?

java - 如何使用Java通过比较属性值和给定的字符串值来获取xml中子子项的标签名称?

java - 谷歌浏览器上奇怪的空白页