「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

【Processing】配列ソート時に他の配列の要素の順番も連動させる方法

配列ソート時に他の配列の要素の順番も連動させる方法を自分用にメモ。

[ 方法 ]

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