我一直在互联网上环顾四周试图找出如何按列对多维数组进行排序,我发现了一种有效的方法,但我不确定它是如何工作的。有人可以向我解释一下吗?
Arrays.sort(data, (int[] num1, int[] num2) ->
Integer number1 = num1[1];
Integer number2 = num2[1];
return number2.compareTo(number1);
});
在这种情况下,代码按第二列的降序对数组[] []进行排序。
答案 0 :(得分:3)
二维数组是一个数组,其元素是数组(在您的情况下为int [])。因此,为了对这样的数组进行排序,您应该提供一个比较int[]
个对象的比较器。这正是代码片段中lambda表达式的作用。它接受两个int []对象,并通过比较两个数组的第二个位置(即索引1)的元素来确定它们的相对顺序。
lambda表达式是Java 8中添加的一个特性。它允许您为功能接口提供实现(这是一个具有单个方法的接口,例如Comparator<int[]>
,其单个方法为{{1没有匿名类实例所需的大部分语法。