java 比较器在内部是如何工作的?
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如何让它下降
while p1.score - p2.score 使得是 ascend
正整数或负整数或零如何计算return
排序对象?内部情况
请帮忙谢谢
A comparison function, which imposes a total ordering on some collection of objects. ...
来自 Comparator:compare
's documentation:
...
Returns:
a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
因此,Comparator
只定义了顺序。使用此信息并对数据结构进行实际排序取决于排序算法。如果我们看一下 Quicksort and Merge Sort 是如何工作的,我们会发现这些算法只需要知道某个元素 a
是小于、等于还是大于 b
,这是信息Comparator
提供(通过返回值 < 0
、= 0
或 > 0
)。
现在让我们解释一下 a - b
如何使其按升序排序(让 Comparator
命名为 asc
),而 b - a
使其按降序排序顺序((让这个 Comparator
命名为 desc
):我们必须查看两个 Comparator
的三种不同情况。
首先,假设a > b
。然后
a - b > 0
,因此 a
根据 asc
“大于”b
b - a < 0
,因此根据 desc
,a
比 b
“小”
接下来,假设a < b
。然后
a - b < 0
因此 a
根据 asc
比 b
“小”
b - a > 0
,因此根据 desc
,a
比 b
“大”
最后,假设a == b
。然后 a - b == b - a == 0
并且元素根据 Comparator
s.
是“相等的”
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如何让它下降 while p1.score - p2.score 使得是 ascend
正整数或负整数或零如何计算return 排序对象?内部情况
请帮忙谢谢
A comparison function, which imposes a total ordering on some collection of objects. ...
来自 Comparator:compare
's documentation:
...
Returns:
a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
因此,Comparator
只定义了顺序。使用此信息并对数据结构进行实际排序取决于排序算法。如果我们看一下 Quicksort and Merge Sort 是如何工作的,我们会发现这些算法只需要知道某个元素 a
是小于、等于还是大于 b
,这是信息Comparator
提供(通过返回值 < 0
、= 0
或 > 0
)。
现在让我们解释一下 a - b
如何使其按升序排序(让 Comparator
命名为 asc
),而 b - a
使其按降序排序顺序((让这个 Comparator
命名为 desc
):我们必须查看两个 Comparator
的三种不同情况。
首先,假设a > b
。然后
a - b > 0
,因此a
根据asc
“大于”b - a < 0
,因此根据desc
,
b
a
比 b
“小”
接下来,假设a < b
。然后
a - b < 0
因此a
根据asc
比 b - a > 0
,因此根据desc
,
b
“小”
a
比 b
“大”
最后,假设a == b
。然后 a - b == b - a == 0
并且元素根据 Comparator
s.