首页 > 解决方案 > Sort Int array using lamda java 8

问题描述

Just to understand Lamda better I have a array of integer like below -

Integer[] arr = {13, 7, 6, 45, 21, 9, 2, 100};

I want to sort the array using lamda function of Java 8. I have used

Arrays.sort(arr, Collections.reverseOrder());

but I want to sort it using Lamda of Java 8 any detailed explanation would be appreciated.

标签: java

解决方案


Arrays#sort需要Comparator对数组进行排序。您可以颠倒参数的顺序,以便以相反的顺序进行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]

推荐阅读