任何人都可以简单地解释此列表的排序方式,以及为什么匿名函数中的代码可以使排序后的列表的第一项始终成为顶部的最后词典词。我得到的是,如果compareTo通过比较返回-1 0和1,但是代码似乎暗示可以同时比较参数o1和o2 ...

List<String> allNames = new ArrayList<>();
allNames("Alfred");
allNames("Mary");
allNames("Hilda");
allNames("Zenda");
allNames("Thomas");
allNames("Isabel");



Collections.sort(allNames, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {

if (o1.equals("Zenda") && !o2.equals("Zenda")){

return -1;

} else if (o2.equals("Zenda") && !o1.equals("Zenda")){

return 1 ;
}

return o1.compareTo(o2);
}
});

最佳答案

他们进行了特殊处理,以便Zenda始终通过检查值来进行排序,并在zenda分别是第一项或第二项的情况下对-1或1进行硬编码,然后将其余的排序委托给常规字符串compareTo实现。

10-04 14:00