私は区間[g] [2]と呼ばれる2次元配列を持っています。 現在、最初の要素の順序を上げることで配列をソートしようとしています。等しい場合は、2番目の要素で降順に並べ替えます。Javaコンパイラを使用して2次元配列をソートする
私は2つの方法でこれをしようとしました:
Arrays.sort(interval, Comparator.comparing((int[] arr) -> arr[0]));
2)は、Arrays.sortを使用して::
Arrays.sort(interval, new Comparator<int[]>() {
@Override
public int compare(int[] s1, int[] s2) {
if (s1[0] > s2[0])
return 1;
else if (s1[0] < s2[0])
return -1;
else {
if(s1[1] < s2[1])
return 1;
else if (s1[1] > s2[1])
return -1;
else
return 0;
}
}
});
のJava 8のComparator.comparing方法を使用して
1)
最初のメソッドは、部分的にソートされたリストを返します。
[[0, 10], [10, 30], [30, 50]]
[[0, 10], [3, 19], [35, 45]]
[[10, 30], [27, 33], [30, 50]]
[[-10, 10], [0, 20], [35, 45]]
[[10, 30], [20, 40], [30, 50]]
[[0, 20], [8, 28], [37, 43]]
[[0, 20], [15, 35], [37, 43]]
[[0, 0], [8, 28], [10, 40]]
ご覧のとおり、3つのタプルのセットでソートされています。
2番目の方法では、配列をまったく並べ替えません。プリミティブデータ型を使用してソートすることはできませんか?誰も助言することはできますか?
あなたが表示された出力を生成何?コードを表示します。 3Dアレイのように見えます。 –
g = 3の2次元配列をソートする8つの異なる例のようです。それらは3組の最初の値によって完全にソートされたように見えます。どのペアも位置1に同じ値を持たないので、セカンダリソートが動作するかどうかはどのように分かりますか? – Andreas
@ジムガリソン私は入力に応じてgを設定していましたが、正しいですが、次の入力セットではgを更新することはなかったことに気付きました。私は自分のコードを修正し、以下の答えを試してみるとうまくいくようです。ありがとうございました! – viviboox3