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::comparing
和 Comparator::comparingDouble
方法轻松地即时创建比较器:
List<Item> items = ...;
items.sort(Comparator.comparing(Item::getName).thenComparingDouble(Item::getPrice));
我有以下 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::comparing
和 Comparator::comparingDouble
方法轻松地即时创建比较器:
List<Item> items = ...;
items.sort(Comparator.comparing(Item::getName).thenComparingDouble(Item::getPrice));