为了更好地理解Lambda
,我有一个如下所示的整数数组 -
Integer[] arr = {13, 7, 6, 45, 21, 9, 2, 100};
我想使用 Java 8 的 Lambda 函数对数组进行排序。 我用过
Arrays.sort(arr, Collections.reverseOrder());
但我想使用 Java 8 的 Lambda
对其进行排序,任何详细的解释将不胜感激。
最佳答案
Arrays#sort
需要一个比较器来对数组进行排序。您可以将参数顺序反转为 Comparator#compare
以相反的顺序进行比较。
如果没有 lambda,你会这样做
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Integer[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer x, Integer y) {
return Integer.compare(y, x);
}
});
System.out.println(Arrays.toString(arr));
}
}
输出:
[100, 45, 21, 13, 9, 7, 6, 2]
Lambda 可以帮助您去掉下图中矩形包围的所有内容:
当正文中只有一条语句时,绿色矩形包围的内容不是必需的。
因此,使用 lambda,代码变为:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
Arrays.sort(arr, (x, y) -> Integer.compare(y, x));
System.out.println(Arrays.toString(arr));
}
}
输出:
[100, 45, 21, 13, 9, 7, 6, 2]
关于java - 使用 lambda java 8 对 Int 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60542281/