Java Comparator 类对数组进行排序 [英] Java Comparator class to sort arrays
问题描述
假设我们有以下二维数组:
Say, we have the following 2-dimensional array:
int camels[][] = new int[n][2];
应该如何声明 Java Comparator
类以使用 Arrays.sort(camels,comparator)
按数组的第一个元素按降序对数组进行排序?供参考的compare
函数是:
How should Java Comparator
class be declared to sort the arrays by their first elements in decreasing order using Arrays.sort(camels, comparator)
? The compare
function for reference is:
@Override public int compare(int[] a, int [] b)
{
return b[0] - a[0];
}
推荐答案
[...] 如何声明 Java Comparator 类以按第一个元素降序排列数组 [...]
[...] How should Java Comparator class be declared to sort the arrays by their first elements in decreasing order [...]
这是一个使用 Java 8 的完整示例:
Here's a complete example using 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 或更早的版本上工作,您会这样做:
If you unfortunate enough to work on Java 6 or older, you'd do:
Arrays.sort(twoDim, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return ((Integer) o2[0]).compareTo(o1[0]);
}
});
这篇关于Java Comparator 类对数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!