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

时间:2018-10-18 20:57:20

标签: java java-8 java-stream comparator

我有以下课程:

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的简化方法吗?

1 个答案:

答案 0 :(得分:3)

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

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