java - 使用 lambda java 8 对 Int 数组进行排序

标签 java

为了更好地理解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 可以帮助您去掉下图中矩形包围的所有内容:

enter image description here

当正文中只有一条语句时,绿色矩形包围的内容不是必需的。

因此,使用 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/

相关文章:

java - 日期增量问题

java - 如何不改变变量类型之间的信息?

java - Java 8中使用一个Stream执行多个get操作并保存结果

java - 从输入流读取

java - 如何在 Jersey 中设置默认为 json 而不是 xml?

java - 如何识别导致调度程序异常的触发器?

java - 用Java计算交易费用

java - 如何使用计时器来延迟与计时器类 (java.util.timer) 无关的特定任务?

java - Java 中的递减

java - 重置计数器 Java