comparator比较器中的compare方法的问题
为什么第一段代码中在compare函数里面相减的是price,sort函数比较的就是price,在第二段代码中相减的是name,sort函数比较的就是name,
我想说的是compare返回的不都是一个int类型的整数吗为什么可以决定sort比较的属性。
//(2)price 从小到大
Arrays.sort(books, new Comparator() {
//这里是对 Book 数组排序,因此 o1 和 o2 就是 Book 对象
@Override
public int compare(Object o1, Object o2) {
Book book1 = (Book) o1;
Book book2 = (Book) o2;
double priceVal = book2.getPrice() - book1.getPrice();
//如果发现返回结果和我们输出的不一致,就修改一下返回的 1 和 -1
if(priceVal > 0) {
return -1;
} else if(priceVal < 0) {
return 1;
} else {
return 0;
}
}
});
//(3)按照书名长度从大到小
Arrays.sort(books, new Comparator() {
//这里是对 Book 数组排序,因此 o1 和 o2 就是 Book 对象
@Override
public int compare(Object o1, Object o2) {
Book book1 = (Book) o1;
Book book2 = (Book) o2;
//要求按照书名的长度来进行排序
return book2.getName().length() - book1.getName().length();
}
})