次の方法でJavaで多次元配列をソートする方法はありますか?
この配列構造を持ってみましょう。
int graph[][] = new int[edges][3];
ここで、すべてのエッジには 2 つの座標とその重みがあります。そして、すべてのエッジの重みに従って配列全体をソートする必要があります。参考までに、スパニングツリーを見つけるために必要です。ありがとう
次のようなものを使用できます。
Arrays.sort(graph, new Comparator<Integer[]>() {
@Override
public int compare(final Integer[] entry1, final Integer[] entry2) {
// DO SORTING STUFF HERE
} });
Arrays.sort
の使用とComparator
に問題があると思いますarray of array
。これは、通常の配列ソートで行うのと同じように機能しますが、少し変更があります。
これはあなたがあなたの場合にこれを行う方法です。配列にはaが必要ですComparator
:Integer[]
-
Integer graph[][] = new Integer[2][3];
graph[0][0] = 2;
graph[0][1] = 4;
graph[0][2] = 3;
graph[1][0] = 0;
graph[1][1] = 1;
graph[1][2] = 2;
Arrays.sort(graph, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
return o1[2] - o2[2];
}
});
for (Integer[] outerArr: graph) {
for (Integer val: outerArr) {
System.out.print(val + " ");
}
System.out.println();
}
プリント:-
0 1 2
2 4 3