这种比较器方法有什么问题?
我已阅读: Java 错误:比较方法违反其一般合同
并且理解如果c1 > c2,并且c2 > c3,那么c1 > c3。我相信这在上面应该成立。
getMaxCosine() 返回 0..1 之间的值,第二次排序是按卡片中文本的长度,越长排名越高。
public int compare(Card c1, Card c2) {
if (getMaxCosine(c1) > getMaxCosine(c2)) {
return -1;
} else if (getMaxCosine(c1) == getMaxCosine(c2)) {
return getMatchingText(c1).length() >= getMatchingText(c2).length() ? -1 : 1;
} else {
return 1;
}
}