使用字段对 class 的数组列表进行排序

Sorting a Arraylist of class with fields

public class Publication {
private String name;
private String author;
private int price;
private String language;}
public class Book extends Publication {
private int ISBN;

public Book(String name, String author, String language, int price, int ISBN) {
    super(name, author, language, price);
    this.ISBN = ISBN;

}

.

public class Book extends Publication {
private int ISBN;

public Book(String name, String author, String language, int price, int ISBN) {
    super(name, author, language, price);
    this.ISBN = ISBN;

}

考虑这些 classes

在另一个 class 中,我制作了一个 Book class

的数组列表

现在我想根据 name 然后 author
排序并打印这个数组列表 但我不知道我能做什么

List<Book> books = new ArrayList<>();

        //put elements in your list

        books.sort((b1,b2) ->{
            int comparator;
            if (b1.name==b2.name){
                comparator = b1.author.compareTo(b2.author);
            } else {
                comparator = b1.name.compareTo(b2.name);
            }
            return comparator;
        });

在list.short((b1,b2)); b1 是当前“Book”,b2 是列表中的下一个“Book”,return 值定义 b1 是在 b2 之前还是之后;

b1和b2是Book类型的变量,可以改名

注意:String.compareTo() 方法;按字母顺序排序,但优先考虑大写字母,例如:它会将大写字母“Z”排在小写字母“a”之前。