使用字段对 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”之前。
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”之前。