好的,这只是一个快速的问题,因为我自己找不到答案。在使用Collections.sort
和compareTo
函数按字母顺序排列的字符串列表中,最后一个可用字符是什么(“ ZZZ”之后)?
compareTo
出于好奇,我想按顺序了解“ ZZZ”以外的字符。
霍尔格(Holger)引用:
您正在比较字符串而不是字符。最后一个字符串,即不存在“更大”字符串的字符串,是由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);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句