我知道這些方法的返回值的規則是obj1.compareTo(obj2)的規則,例如,如果obj2在層次結構中的obj1下,則返回值爲負,如果它在obj1的頂部,那麼它的正面(如果它相等,那麼它是0)。然而,在我的課堂上,我看到了使用Math.signum的例子,以便在compareTo方法中獲得-1(用於負數)和1(用於正數)。比較和比較的負值和正值返回值
有什麼理由呢?
編輯:
這裏是我的意思代碼:
Comparator comp = new Comparator() {
public int compare(Object obj1, Object obj2) {
Book book1 = (Book) obj1;
Book book2 = (Book) obj2;
int order = book1.getAuthor().compareTo(book2.getAuthor());
if (order == 0) {
order = (int) Math.signum(book1.getPrice() - book2.getPrice());
}
return order;
};
也許pedantry? – biziclop 2014-08-28 19:57:54
對不起,我在 – Goldi 2014-08-28 20:03:47
之後加了它可能價格有浮動或雙重類型。如果是這樣,那幾乎是正確的實施。因爲如果你只是寫'(int)book1.getPrice() - book2.getPrice()',你可能會溢出。幾乎是因爲浮點類型的平等是可能的。 – talex 2014-08-28 20:07:36