次の2次元配列があるとします。
_int camels[][] = new int[n][2];
_
どのようにJava 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]);
}
});
@aioobeからの回答は素晴らしいです。 Java 8。
int[][] twoDim = { { 1, 2 }, { 3, 7 }, { 8, 9 }, { 4, 2 }, { 5, 3 } };
Arrays.sort(twoDim, (int[] o1, int[] o2) -> o2[0] - o1[0]);
System.out.println(Arrays.deepToString(twoDim));
私にとってはJava 8構文で直感的で覚えやすいです。