2011-03-18 79 views
7

我有一個任務,我需要用params(String bookNum,String bookTitle,int qoh,double bookPrice)創建一個BookInventory對象的ArrayList。 bookNum是書的連字號。創建這個數組後,我需要使用Collections類的排序方法。在我的實體BookInventory類中,我需要編寫一個compareTo(),最終將按照bookNum(這是一個String)對arraylist進行排序。我該怎麼做呢?這是我的第一次經歷,我不明白。寫一個公共int compareTo()方法java

回答

16

這應該讓你開始:

public class BookInventory implements Comparable<BookInventory> { 

    // code 

    public int compareTo(BookInventory other){ 
    return bookTitle.compareTo(other.bookTitle); 
    } 

    //code 
} 

的事情,從這個是實現可比帶走,這樣就可以實現自己的自定義,當您進行排序的ArrayList compareTo方法多數民衆贊成自動調用。

要了解更多有關的compareTo和排序,看看這個:

http://download.oracle.com/javase/tutorial/collections/interfaces/order.html

+0

爲任何閱讀快速注意不同於忽略equals,輸入這裏的參數不應該是Object類型。 「 – anon58192932 2014-11-18 04:47:14

1

如果你看一個的documentation for the Collections類,你會看到,它實現了兩個sort mwethods。可以將任何種類的ListComparator對象一起用於比較列表的元素。另一個需要執行Comparable的任何類型對象的List。由於compareToComparable定義(而Comparator必須實現compare),因此它告訴您必須將您的類聲明爲implements Comparable<BookInventory>,這意味着它必須具有compareTo方法。請參閱documentation for Comparable.compareTo(T)瞭解您的方法必須執行的操作。你會發現String方法compareTo(String)是有用的。

1

compareTo()方法用於比較具有多個屬性的兩個對象。 它將返回一個整數來指示比較哪個對象較大。 如果被比較的對象具有自然順序的屬性,則更有意義。

返回值:

  • 小於0 - >表示該對象是在之前傳入的對象。
  • 大於0 - >的目的是傳遞的對象
  • 等於0後 - >兩個對象在同一水平
+1

」等於9「 - >」等於0「 – 2011-03-18 02:41:16

+0

oops我的不好。胖手指打字。最後一個選項應該是「等於0」。 @保羅祝福。謝謝 – 2011-03-18 02:47:01