有人能解释比较器是如何工作的吗?我的意思是,当有人使用返回A-B或例如从这里拿了(http://buttercola.blogspot.com/2015/08/leetcode-skyline-problem.html):自定义比较器:需要说明
public class EdgeComparator implements Comparator<Edge> {
@Override
public int compare(Edge a, Edge b) {
if (a.x != b.x) {
return a.x - b.x;
}
if (a.isLeft && b.isLeft) {
return b.height - a.height;
}
if (!a.isLeft && !b.isLeft) {
return a.height - b.height;
}
return a.isLeft ? -1 : 1;
}
}
说,例如,在这里他们为什么使用a.height - b.height?或b.height - a.height?请解释我。
没有人能知道这一点。这些变量名是可怕的 - 什么是'x'?什么是“身高”?什么是'左'?如何比较边缘?是什么让一个边缘“更大”?更长的边缘? “左”与它有什么关系? –
你知道'比较器'用于什么吗?而'compare()'方法应该返回什么? - https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html – Codebender