正解がthisです。しかし、あなたは完全に怒っハックをしたい場合は、あなたがこれを行うことができます:
public final class ParallelIntArrays extends AbstractList<int[]> {
private final int[] array1;
private final int[] array2;
public ParallelIntArrays(int[] array1, int[] array2) {
if (array1.length != array2.length)
throw new IllegalArgumentException();
this.array1 = array1;
this.array2 = array2;
}
@Override
public int[] get(int i) {
return new int[] { array1[i], array2[i] };
}
@Override
public int size() {
return array1.length;
}
@Override
public int[] set(int i, int[] a) {
if (a.length != 2)
throw new IllegalArgumentException();
int[] b = get(i);
array1[i] = a[0];
array2[i] = a[1];
return b;
}
}
次に、あなたが行うことができます:上に書いたように、ParallelIntArrays
がList
として正しく機能していないこと
int[] city = {5, 1, 2, 4, 3 };
int[] pop = {100, 30, 4000, 400, 5000};
new ParallelIntArrays(city, pop).sort(Comparator.comparingInt(arr -> arr[0]));
System.out.println(Arrays.toString(city));
System.out.println(Arrays.toString(pop));
注意を。例えば、list.contains(list.get(0))
はfalse
となります。代わりにList<IntBuffer>
またはList<List<Integer>>
に変更した場合は修正されます。
関連情報であるため、両方の情報をCityオブジェクトに保存することをお勧めします。 – marcellorvalle
最近私は並列配列が目立っていくつかの質問を見ました。これは1960年代のことです。誰がこれを教えていますか?どうして?どのようにしてこれをやめ、OOの原則を1日目から教えるようにするのですか? –