我有以下课程:
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的简化方法吗?
答案 0 :(得分:3)
您可以使用Comparator::comparing
和Comparator::comparingDouble
方法轻松地动态创建比较器:
List<Item> items = ...;
items.sort(Comparator.comparing(Item::getName).thenComparingDouble(Item::getPrice));