java - 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.
解决方案
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]
推荐阅读
- javascript - draw() 完成回调
- qlikview - 无法使用 PptxGenJs 库设置 Html 表的位置
- jquery - 将 optgroup 中的动态选项添加到 select2
- visual-studio-code - Vi 'z' 命令是否有等效的 VSCODE?
- android - 保护 Firebase 实时数据库,授予对 Android 穿戴设备的访问权限
- scala - Scala - 如何使用模式匹配返回 Option[String] 而不是 Any?
- c# - 临时值类型如何装箱
- linux - 如何在 LXSession (LXDE, Lubuntu) 中使用很棒的 WM
- python - Python 3.6 仍然是使用 homebrew 安装并升级到 3.7 后系统报告的 python 版本
- go - golang 频道中的函数调用