使用Collections.sort对字符串进行排序?

Sha*_*han 3 java sorting string

我正在尝试使用collection.sort()方法对两个字符串进行排序,但是我在理解实现的逻辑时遇到了问题.这是我到目前为止所拥有的.我的实施有问题吗?注意:我想按字母顺序对它们进行排序:"Apple">"Orange"

Collections.sort(mailbox.getMessages() , (String a, String b) -> {
    if (String.valueOf(a.charAt(0)) > String.valueOf(b.charAt(0))) {
        return -1;
    }
    else if (String.valueOf(a.charAt(0)) <
        String.valueOf(b.charAt(0))) {
        return 1;
    }
    else {
        return 0;
    }
});
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

String实现一个Comparable<String>被实现为词典比较,换句话说,默认情况下"Apple".compareTo("Orange") < 0.所以默认就足够了.

现在Collections.sort有一个变量将这个比较器考虑在内,你可以简单地使用:

Collections.sort(mailbox.getMessages());
Run Code Online (Sandbox Code Playgroud)

关于您自己的实施:

你不应该使用String.valueof强制转换为字符串:你可以将chars与s进行比较<,但不能在Strings 上使用此运算符.此外,你的实现不是递归的:如果两个第一个字符是相等的,那并不意味着String它们本身是相等的,例如"Apple"和"Ambiguous".所以你必须实现一个更复杂的比较器.