1. ホーム

[解決済み] 配列をソートするJava Comparatorクラス

2022-04-17 12:45:07

質問

次のような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 クラスをどのように宣言すれば、配列をその 最初の要素の降順 [...]

を使用した完全な例です。 ジャバエイト :

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]]


について ジャバセブン することができます。

Arrays.sort(twoDim, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o2[0], o1[0]);
    }
});


に取り組むことができるほど不幸な場合。 ジャバ6 とか、それ以上の年齢の方なら、やっていただけると思います。

Arrays.sort(twoDim, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return ((Integer) o2[0]).compareTo(o1[0]);
    }
});