我正在做这个项目,在那里我会得到一些书,我应该按照这个逻辑对它进行排序:
如果一本书的页数比另一本书的页数多,那么页数多的书排在第一位。
如果两本书的页数相同,则按标题字母顺序排序。
如果两本书的页数和标题相同,则按作者字母顺序排序。
我试图解决但没有成功,所以我在解决方案中查找:
public class Book implements Comparable<Book>{
public int compareTo(Book specifiedBook) {
// First check if they have different page counts
if(this.numberOfPages != specifiedBook.numberOfPages){
// this will return a negative value if this < specified but will return a positive value if this > specified
return this.numberOfPages - specifiedBook.numberOfPages;
}
// If page counts are identical then check if the titles are different
if(!this.title.equals(specifiedBook.title){
return this.title.compareTo(specifiedBook.title);
}
// If page titles are also identical then return the comparison of the authors
return this.author.compareTo(specifiedBook.author);
}
}
我在这里不明白的是这部分“return this.title.compareTo(specifiedBook.title);”。我们如何在方法 compareTo 中使用方法 compareTo,这不是递归吗,我知道当我们实现接口 comperable 时,我们必须覆盖方法 compareTo,但是我们如何在覆盖的 compareTo 方法中使用该 compareTo 方法?在这种情况下和一般情况下,它应该做什么?
令我困惑的是,我们如何使用刚刚在接口中声明的方法,它不是从父类继承的。它只是在可比接口中声明,所以当我们实现接口时,我们必须重写它
慕虎7371278
SMILET
相关分类