我有一个任务,我需要用params创建一个BookInventory对象的arraylist(String bookNum,String bookTitle,int qoh,double bookPrice)。其中bookNum是书籍的带连字符的ISBN号。创建此数组后,我需要使用Collections类的sort方法。在我的实体BookInventory类中,我需要编写一个compareTo(),它最终将通过bookNum(这是一个String)对arraylist进行排序。我该怎么做呢?这是我第一次遇到这种情况,我不明白。
答案 0 :(得分:17)
这应该让你开始:
public class BookInventory implements Comparable<BookInventory> {
// code
public int compareTo(BookInventory other){
return bookTitle.compareTo(other.bookTitle);
}
//code
}
要做的就是实现Comparable,以便您可以实现自己的自定义compareTo方法,该方法在对ArrayList进行排序时自动调用。
要了解有关compareTo和订购的更多信息,请查看以下内容:
http://download.oracle.com/javase/tutorial/collections/interfaces/order.html
答案 1 :(得分:1)
如果你看一下documentation for the Collections类,你会发现它实现了两个sort
mwethods。可以使用任何类型的List
和Comparator
对象来比较列表的元素。另一个采用List
实现Comparable
的任何类型的对象。由于compareTo
由Comparable
定义(而Comparator
必须实现compare
),因此告诉您必须将您的类声明为implements Comparable<BookInventory>
,这意味着它必须有compareTo
方法。请参阅documentation for Comparable.compareTo(T)
了解您的方法必须执行的操作。您会发现String
方法compareTo(String)
很有用。
答案 2 :(得分:1)
compareTo()方法用于比较具有多个属性的两个对象。 它将返回一个整数,以指示哪个对象比较大。 如果被比较的对象具有自然顺序的属性,则更有意义。
返回值: