编写一个public int compareTo()方法java

时间:2011-03-18 02:03:31

标签: java

我有一个任务,我需要用params创建一个BookInventory对象的arraylist(String bookNum,String bookTitle,int qoh,double bookPrice)。其中bookNum是书籍的带连字符的ISBN号。创建此数组后,我需要使用Collections类的sort方法。在我的实体BookInventory类中,我需要编写一个compareTo(),它最终将通过bookNum(这是一个String)对arraylist进行排序。我该怎么做呢?这是我第一次遇到这种情况,我不明白。

3 个答案:

答案 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。可以使用任何类型的ListComparator对象来比较列表的元素。另一个采用List实现Comparable的任何类型的对象。由于compareToComparable定义(而Comparator必须实现compare),因此告诉您必须将您的类声明为implements Comparable<BookInventory>,这意味着它必须有compareTo方法。请参阅documentation for Comparable.compareTo(T)了解您的方法必须执行的操作。您会发现String方法compareTo(String)很有用。

答案 2 :(得分:1)

compareTo()方法用于比较具有多个属性的两个对象。 它将返回一个整数,以指示哪个对象比较大。 如果被比较的对象具有自然顺序的属性,则更有意义。

返回值:

  • 小于0 - >表示该对象在传入的对象之前。
  • 大于0 - &gt;对象在传递的对象之后
  • 等于0 - &gt;两个对象处于同一级别