提问人:Arya 提问时间:6/8/2023 最后编辑:marstranArya 更新时间:6/8/2023 访问量:48
使用 lambda 函数进行 Java 排序
Java sorting with lambda function
问:
有人可以将此函数转换为 lambda 函数吗?我猜我在打字时遇到了一些麻烦。请帮忙
Arrays.sort(arr, new Comparator<Item>() {
@Override
public int compare(Item item1, Item item2) {
double cpr1 = new Double((double) item1.value / (double) item1.weight);
double cpr2 = new Double((double) item2.value / (double) item2.weight);
if (cpr1 < cpr2) {
return 1;
} else {
return -1;
}
}
});
答:
0赞
Gabriel Eriksson
6/8/2023
#1
public static void main(String[] args) {
var arr = new Item[]{};
Arrays.sort(arr, MyClass::useMySorting);
}
private static int useMySorting(Item item1, Item item2) {
double cpr1 = new Double((double) item1.value / (double) item1.weight);
double cpr2 = new Double((double) item2.value / (double) item2.weight);
if (cpr1 < cpr2)
return 1;
else
return -1;
}
评论
1赞
Arya
6/8/2023
#2
我尝试了几件事,终于找到了解决方案:
Arrays.sort(arr, (item1, item2) -> Double.compare((double) item2.value / item2.weight, (double) item1.value / item1.weight));
这将解决问题。
评论
1赞
Holger
6/14/2023
更简单:Arrays.sort(arr, Comparator.comparingDouble(item -> (double)item.value / item.weight));
评论
Item
new Double
double
Double