java - 如何按多个类别对 Arraylist 进行排序

标签 java arraylist overriding compareto

这里我比较的只是书名。但之后我想将它与作者和书号进行比较。据我所知,必须只有一种覆盖方法。所以请帮我解决这个问题。

@Override

public int compareTo(Book bk) {

return this.bookTitle.compareTo(bk.bookTitle);
}

最佳答案

您必须为不同的排序类型实现不同的比较器,并将它们传递给 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());

关于java - 如何按多个类别对 Arraylist 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573938/

相关文章:

java - 按特定元素对对象的 ArrayList 进行排序

java - 我尝试从键盘添加字符串后,数组列表返回空列表

dart - @override Dart 代码

Swift - 覆盖具有不同默认参数的函数

java - 无法看到 IndexOutOfBoundsException

Android:在 XML 中覆盖自己的 XML View

java - 在数组中查找具有重复项的和对,时间复杂度为 O(n)

java - 在 Testng 中分配负载

java - 私有(private)类ArrayList(集合)

Java - Eclipse 包