我在这里比较但只是书的标题。但之后我想将它与作者和书号进行比较。据我所知,必须只有一种覆盖方法。所以请帮助我。
@Override
public int compareTo(Book bk) {
return this.bookTitle.compareTo(bk.bookTitle);
}
答案 0 :(得分:3)
您必须为不同的排序类型实现不同的比较器,并将它们传递给Collections.Sort方法。见Comparator
Class AuthorSort implements Comparator<Book>
{
public int compare(Book b1, Book b2){
// do comparision on Author
}
}
实施书号排序
Class BookNoSort implements Comparator<Book>
{
public int compare(Book b1, Book b2){
// do comparision on Book Number
}
}
在Collections类上调用Sort方法并提供不同的实现
Collections.sort(list, new BookNumberSort());
Collections.sort(list, new AuthorSort());
答案 1 :(得分:0)
Google Comparator
class BookAuthorComparator implements Comparator<Book>{
public int compare(Book b1, Book b2){
return b1.getAuthor().compareTo(b2.getAuthor());
}
}
Collections.sort(bookList, new BookAuthorCompartor());
答案 2 :(得分:0)
通过实施Compareable
编写自己的比较器答案 3 :(得分:0)
你可以使用匿名内部类:
Collections.sort(bookList, new Comparator<Book>() {
@Override
public int compare(Book b1, Book b2) {
return b1.property.compare(b2.property);
}
});
如果您想要对标题或作者进行排序,只需更改
return b1.getTitle().compare(b2.getTitle());
或
return b1.getAuthor().compare(b2.getAuthor());