我有一個任務,我需要用params(String bookNum,String bookTitle,int qoh,double bookPrice)創建一個BookInventory對象的ArrayList。 bookNum是書的連字號。創建這個數組後,我需要使用Collections類的排序方法。在我的實體BookInventory類中,我需要編寫一個compareTo(),最終將按照bookNum(這是一個String)對arraylist進行排序。我該怎麼做呢?這是我的第一次經歷,我不明白。寫一個公共int compareTo()方法java
回答
這應該讓你開始:
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
如果你看一個的documentation for the Collections類,你會看到,它實現了兩個sort
mwethods。可以將任何種類的List
與Comparator
對象一起用於比較列表的元素。另一個需要執行Comparable
的任何類型對象的List
。由於compareTo
由Comparable
定義(而Comparator
必須實現compare
),因此它告訴您必須將您的類聲明爲implements Comparable<BookInventory>
,這意味着它必須具有compareTo
方法。請參閱documentation for Comparable.compareTo(T)
瞭解您的方法必須執行的操作。你會發現String
方法compareTo(String)
是有用的。
compareTo()方法用於比較具有多個屬性的兩個對象。 它將返回一個整數來指示比較哪個對象較大。 如果被比較的對象具有自然順序的屬性,則更有意義。
返回值:
- 小於0 - >表示該對象是在之前傳入的對象。
- 大於0 - >的目的是傳遞的對象
- 等於0後 - >兩個對象在同一水平
」等於9「 - >」等於0「 – 2011-03-18 02:41:16
oops我的不好。胖手指打字。最後一個選項應該是「等於0」。 @保羅祝福。謝謝 – 2011-03-18 02:47:01
爲任何閱讀快速注意不同於忽略equals,輸入這裏的參數不應該是Object類型。 「 – anon58192932 2014-11-18 04:47:14