配列ソート時に他の配列の要素の順番も連動させる方法を自分用にメモ。
[ 方法 ]
ArrayAをソートした時にArrayBの要素の順番も連動するようにします。
import java.util.Arrays; void setup() { final int[] ArrayA = new int[] { 2, 1, 3 }; final int[] ArrayB = new int[] { 5, 6, 4 }; println("[ ソート前 ]"); for (int i = 0; i < ArrayA.length; i++) { println("ArrayA[" + i + "]: " + ArrayA[i]); } for (int i = 0; i < ArrayB.length; i++) { println("ArrayB[" + i + "]: " + ArrayB[i]); } println(); final int[] SortedArrayA = Arrays.copyOf(ArrayA, ArrayA.length); final int[] SortedArrayB = new int[ArrayB.length]; Arrays.sort(SortedArrayA);//SortedArrayAを小さい順にソート for (int i = 0; i < SortedArrayA.length; i++) //SortedArrayAに基づいてSortedArrayBをソート { for (int j = 0; j < ArrayA.length; j++) { if (SortedArrayA[i] == ArrayA[j]) { SortedArrayB[i] = ArrayB[j]; break; } } } println("[ ソート後 ]"); for (int i = 0; i < ArrayA.length; i++) { println("ArrayA[" + i + "]: " + ArrayA[i]); } for (int i = 0; i < ArrayB.length; i++) { println("ArrayB[" + i + "]: " + ArrayB[i]); } println(); }
[ ソート前 ] ArrayA[0]: 2 ArrayA[1]: 1 ArrayA[2]: 3 ArrayB[0]: 5 ArrayB[1]: 6 ArrayB[2]: 4 [ ソート後 ] ArrayA[0]: 2 ArrayA[1]: 1 ArrayA[2]: 3 ArrayB[0]: 5 ArrayB[1]: 6 ArrayB[2]: 4