我一直在网上寻找,试图找出如何按列排序多维数组,我找到了一种有效的方法,但我不确定它是如何工作的。有人能给我解释一下吗?
Arrays.sort(data, (int[] num1, int[] num2) ->
Integer number1 = num1[1];
Integer number2 = num2[1];
return number2.compareTo(number1);
});
在这里,代码将数组[][]按第二列降序排序。
二维数组是其元素为数组(在您的示例中为int[])的数组。因此,为了对这样一个数组进行排序,您应该提供一个比较int[]
对象的比较器。这正是代码片段中的lambda表达式所做的工作。它接受两个int[]对象,并通过比较两个数组的第二个位置(即索引1)上的元素来确定它们的相对顺序。
lambda表达式是Java 8中添加的一个特性。它允许您为函数接口提供实现(它是具有单个方法的接口,例如Comparator<int[]>
,其单个方法是int compare (int[] first, int[] second)
),而无需匿名类实例所需的大多数语法。