好的,这只是一个简单的问题,因为我自己无法找到答案。在按字母顺序排序的字符串列表中,使用Collections.sort
和compareTo
函数,最后一个可用字符是什么(超出“ZZZ”)?
出于好奇,我想以compareTo
的顺序知道“ZZZ”以外的人物。
答案 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);
}
});