我有一个带有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;
        }
    });

08-19 00:42