有人能解釋比較器是如何工作的嗎?我的意思是,當有人使用返回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