「毎日Unity」の技術ブログ

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

【Processing】自作クラスのソート方法

自作クラスのソート方法を自分用にメモ。

[ ソート方法 ]

自作クラスVector2を要素とする配列を要素のYが小さい順にソートします。

import java.util.Arrays;

void setup()
{
    final Vector2[] ArrayA = new Vector2[]
    {
        new Vector2(1, 4),
        new Vector2(6, 5),
        new Vector2(2, 3),
    };

    println("[ ソート前 ]");
    for (int i = 0; i < ArrayA.length; i++) 
    {
        println("ArrayA[" + i + "]: " + ArrayA[i].ToString());
    }
    println();

    final Vector2[] SortedArrayA = Arrays.copyOf(ArrayA, ArrayA.length);

    Arrays.sort(SortedArrayA, (Vector2 Item1, Vector2 Item2) ->//Yが小さい順にソート
    {
        if(Item1.Y > Item2.Y)
        {
            return 1;
        }
        else if(Item1.Y < Item2.Y)
        {
            return -1;
        }
        else
        {
            return 0;
        }
    });

    println("[ ソート後 ]");
    for (int i = 0; i < SortedArrayA.length; i++) 
    {
        println("SortedArrayA[" + i + "]: " + SortedArrayA[i].ToString());
    }
    println();
}

class Vector2
{
    float X = 0;
    float Y = 0;

    Vector2(float _X, float _Y)
    {
        X = _X;
        Y = _Y;
    }

    String ToString()
    {
        return "(" + X + ", " + Y + ")";
    }
}
[ ソート前 ]
ArrayA[0]: (1.0, 4.0)
ArrayA[1]: (6.0, 5.0)
ArrayA[2]: (2.0, 3.0)

[ ソート後 ]
SortedArrayA[0]: (2.0, 3.0)
SortedArrayA[1]: (1.0, 4.0)
SortedArrayA[2]: (6.0, 5.0)