假设有两个对象:
Item item1 = new Item(4.5);
Item item2 = new Item(3.8);
使用 .sorted((a, b) -> Double.compare(a.rating, b.rating))
→ 比较 4.5 vs 3.8 → 正数 → item1 排在 item2 后 → [3.8, 4.5](升序)
使用 .sorted((a, b) -> Double.compare(b.rating, a.rating))
→ 比较 3.8 vs 4.5 → 负数 → item1 排在 item2 前 → [4.5, 3.8](降序)
更简洁的写法(推荐)
Java 提供了更清晰的方式实现降序:
.sorted(Comparator.comparingDouble(item -> item.rating).reversed())
或者如果 rating 是 public 字段:
.sorted(Comparator.comparingDouble(Item::getRating).reversed())
注意!!!
方法引用 类名::成员 只能用于:
静态方法:Math::abs
实例方法:String::length
构造方法:ArrayList::new
但不能用于字段(field)!