[英]How does java comparator work internally?
class Checker implements Comparator<Player> {
@Override
public int compare(Player p1, Player p2) {
if (p1.score == p2.score) {
return p1.name.compareTo(p2.name);
} else {
return p2.score - p1.score;
}
}
}
p2.score - p1.score 如何使其下降而 p1.score - p2.score 使其上升
正整数或负整数或零返回如何对对象进行排序? 内部发生了什么
请帮忙谢谢
一个比较函数,它对某些对象集合进行总排序。 ...
...
返回:
负整数、零或正整数作为第一个参数小于、等于或大于第二个参数。
因此, Comparator
只定义顺序。 使用此信息并实际对数据结构进行排序取决于排序算法。 如果我们看看Quicksort和Merge Sort是如何工作的,我们就会发现这些算法只需要知道某个元素a
是否小于、等于或大于b
,这是Comparator
提供的信息(通过返回一个值< 0
, = 0
或> 0
)。
现在让我们解释一下a - b
如何让它按升序排序(让这个Comparator
命名为asc
),而b - a
让它按降序排序((让这个Comparator
命名为desc
):我们必须看看两个Comparator
的三种不同情况。
首先,假设a > b
。 然后
a - b > 0
,因此a
大于“” b
根据asc
b - a < 0
从而a
小于“” b
根据desc
接下来,假设a < b
。 然后
a - b < 0
从而a
小于“” b
根据asc
b - a > 0
,从而a
大于“” b
根据desc
最后,假设a == b
。 然后a - b == b - a == 0
并且元素根据两个Comparator
都是“相等的”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.