Java8 使用方法参考按 2 个字段排序

Java8 Sort by 2 fields using method reference

我有以下 class :

public class Item {
    String name;
    double price;
    // Getters & Setters
}

我可以像这样使用 lambda 进行比较:

Collections.sort(items, (Item o1, Item o2) -> {
            int result = Double.valueOf(o2.getPrice()).compareTo(o1.getPrice());
            if (result == 0) {
                return o1.getName().compareTo(o2.getName());
            }
            return result;
        });

我想使用 方法参考 来比较元素,但我想先按名称比较然后再使用价格。我怎样才能做到这一点?

这里还有使用 lambda 的简化方法吗?

您可以使用 Comparator::comparingComparator::comparingDouble 方法轻松地即时创建比较器:

List<Item> items = ...;
items.sort(Comparator.comparing(Item::getName).thenComparingDouble(Item::getPrice));