按字母顺序排列的Z以外的字符

时间:2014-06-19 09:21:03

标签: java sorting compareto alphabetical

好的,这只是一个简单的问题,因为我自己无法找到答案。在按字母顺序排序的字符串列表中,使用Collections.sortcompareTo函数,最后一个可用字符是什么(超出“ZZZ”)?

出于好奇,我想以compareTo的顺序知道“ZZZ”以外的人物。

2 个答案:

答案 0 :(得分:0)

在Unicode中,字母表中的最后一个字符是z(小写)。 接下来的第一个字符是{

答案 1 :(得分:0)

霍尔格引用:

  

您正在比较字符串而不是字符。最后一个String,即没有“更大”字符串存在的字符串,是一个由2147483647个字符重复组成的字符串' \ uFFFF'。你不想使用它......

我认为这是我提问的正确答案。


PS:对于那些想知道的人,这是原始问题中的代码:

我提出问题的原因是:

Collections.sort(myObjectList, new Comparator<MyObject>(){
    @Override
    public int compare(MyObject o1, MyObject o2){
        String name1 = o1.getName();
        String name2 = o2.getName();

        if(name1 == null)
            name1 = "ZZZ"; // <- Last String in compareTo's order
        if(name2 == null)
            name2 = "ZZZ"; // <- Last String in compareTo's order

        return name1.compareTo(name2);
    }
});

更改为以下内容而不是解决我的问题:

Collections.sort(myObjectList, new Comparator<MyObject>(){
    @Override
    public int compare(MyObject o1, MyObject o2){
        String name1 = o1.getName();
        String name2 = o2.getName();

        if(name1 == null && name2 == null)
            return 0;
        if(name1 == null) // && name2 != null
            return 10;
        if(name2 == null) // && name1 != null
            return -10;
        else // name1 != null && name2 != null
            return name1.compareTo(name2);
    }
});