按(区分大小写)字母顺序对字符串进行排序的简单方法

2024-03-27

我需要按字母顺序对字符串列表进行排序:

List<String> list = new ArrayList();
list.add("development");
list.add("Development");
list.add("aa");
list.add("AA");
list.add("Aa");

一种常见的方法是使用比较器:

Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

CaseInsensitiveComparator 的问题是“AA”等于“aa”。字符串按照相同值相加的顺序出现在结果中,这是不正确的:

"aa","AA","Aa","development","Development"

如果您不想添加对 Guava 的依赖(根据 Michael 的回答),那么这个比较器是等效的:

private static Comparator<String> ALPHABETICAL_ORDER = new Comparator<String>() {
    public int compare(String str1, String str2) {
        int res = String.CASE_INSENSITIVE_ORDER.compare(str1, str2);
        if (res == 0) {
            res = str1.compareTo(str2);
        }
        return res;
    }
};

Collections.sort(list, ALPHABETICAL_ORDER);

我认为它同样容易理解和编码......

该方法的最后4行可以更简洁地写成如下:

        return (res != 0) ? res : str1.compareTo(str2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按(区分大小写)字母顺序对字符串进行排序的简单方法 的相关文章

随机推荐