Java中使用lambda表达式自定义排序
-
对于一维数组,通常使用
Arrays.sort()
(默认升序)int[] nums = {3, 1, 4, 2}; Arrays.sort(nums);
-
对于二维数组,可以
lambda表达式
实现特定的排序要求。- 在
Arrays.sort()
的第二个参数中,写lambda表达式 - lambda表达式形如
(a, b) -> {return a - b;}
,其中a, b表示数组中的元素 - 升序/降序
a-b
表示升序b-a
表示降序
- 为了防止Integer的边界情况,可以用
Integer.compare(a[0], b[0])
替代a-b
// 假设people[i]的第一个维度表示身高,第二维度表示体重 int[][] people = {{1, 2}, {3, 4}, {5, 6}}; // 希望首先按找身高降序排列,然后按体重升序排列 Arrays.sort(people, (a, b) -> { if (a[0] != b[0]) return b[0] - a[0]; else return a[1] - b[1]; });
- 在