说,我们有以下二维数组:
int camels[][] = new int[n][2];
应该如何Comparator声明Java 类以使用降序按数组的第一个元素对数组进行排序Arrays.sort(camels, comparator)?compare供参考的功能是:
Comparator
Arrays.sort(camels, comparator)
compare
@Override public int compare(int[] a, int [] b) { return b[0] - a[0]; }
[…]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 […]
这是使用Java 8的完整示例:
import java.util.*; public class Test { public static void main(String args[]) { int[][] twoDim = { {1, 2}, {3, 7}, {8, 9}, {4, 2}, {5, 3} }; Arrays.sort(twoDim, Comparator.comparingInt(a -> a[0]) .reversed()); System.out.println(Arrays.deepToString(twoDim)); } }
输出:
[[8, 9], [5, 3], [4, 2], [3, 7], [1, 2]]
对于Java 7,你可以执行以下操作:
Arrays.sort(twoDim, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return Integer.compare(o2[0], o1[0]); } });
如果你不幸无法在Java 6或更早版本上运行,请执行以下操作:
Arrays.sort(twoDim, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return ((Integer) o2[0]).compareTo(o1[0]); } });