我有一个带有3个对象的ArrayList。就我而言,每个对象都是一本新书。每本书的书名,零售价,库存数量等都有不同的值。
我如何比较和排序所有对象的零售价格。我听说过
Collections.sort(books, new Comparator<BookInfo>(){
@Override
public int compare(BookInfo book1, BookInfo book2) {
return book1.getTitle().compareTo(book2.getTitle());
}
});
使用自定义比较器,但是我不能将
compareTo
方法用于双打/整数。我将如何实现或更改它,以便比较双打/整数? 最佳答案
尝试强制转换为Double类,然后进行比较:
Collections.sort(books, new Comparator<BookInfo>(){
@Override
public int compare(BookInfo book1, BookInfo book2) {
Double p1 = book1.getRetailPrice();
Double p2 = book2.getRetailPrice();
return p1.compareTo(p2);
}
});
如果要首先在价格之后排序,然后在名称之后排序:
Collections.sort(books, new Comparator<BookInfo>(){
@Override
public int compare(BookInfo book1, BookInfo book2) {
Double p1 = book1.getRetailPrice();
Double p2 = book2.getRetailPrice();
int res = p1.compareTo(p2);
if(res == 0){
return book1.getTitle().compareTo(book2.getTitle());
}
return res;
}
});