gpt4 book ai didi

java - 为什么比较会这样?

转载 作者:行者123 更新时间:2023-12-01 17:54:55 24 4
gpt4 key购买 nike

我已经编写了自定义比较器:

     public static Comparator<String> compareEThenEverything(){
return (s1, s2) -> {
if(s1.toLowerCase().startsWith("e") && s2.toLowerCase().startsWith("e"))
return 0;
if(s1.toLowerCase().startsWith("e")) return 1;
return -1;
};
}

我想对我的数组进行排序,所有以“e”开头的字符串都将排在第一位。

为什么电流比较器工作反了?似乎第一个字符带有“e”的单词比带有其他字符的单词更大,因为我返回 1 - 而不是 -1?

为什么会出现这种情况?

最佳答案

1 表示第一个参数大于第二个参数,并且由于默认顺序是递增的那么是的,任何以 e 开头的内容都会排在最后,所以你需要的是交换 -1, 1:

public static Comparator<String> compareEThenEverything(){
return (s1, s2) -> {
if(s1.toLowerCase().startsWith("e"))
return -1;
if(s1.toLowerCase().startsWith("e") && s2.toLowerCase().startsWith("e"))
return 0;
return 1;
};
}

关于java - 为什么比较会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45907550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com