Compareto

compareto.png

アタシとこの子、どっちを選ぶ??

  • 自作クラスにComparableを実装する
  • そして使うときはjava.util.Arraysのsortを使う

Arrays.sort(自作クラス);

とする。
STLと似てる。

public class Voxel implements Comparable<Voxel>{
public float mEyeDis;
public int index;
public Voxel(){//Constructor
            index=0;
            mEyeDis=0.0f;
        }
public int compareTo(Voxel another) {
        float ret=(mEyeDis-another.mEyeDis);
        if(ret<0.0f){return -1;}else if(ret>0.0){return 1;}else{return 0;}
        /*比較したいものがfloat型の場合、適当にやると、-0.01がintになって0になってしまう*/
    }
}

自作クラスを入れたコンテナでソートしてみよう★

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        Voxel[] mVoxels=new Voxel[5];
        for(int i=0;i<5;i++){mVoxels[i]=new Voxel();mVoxels[i].index=i;}
        mVoxels[0].mEyeDis=0.1f;
        mVoxels[1].mEyeDis=0.0f;
        mVoxels[2].mEyeDis=0.3f;
        mVoxels[3].mEyeDis=0.5f;
        mVoxels[4].mEyeDis=0.01f;
        Arrays.sort(mVoxels);
        for(int i=0;i<5;i++){System.out.println("["+mVoxels[i].index+"]"+mVoxels[i].mEyeDis);}
    }
}

別のやり方

public class MyComparator implements Comparator {  
    public int compare(Object arg0, Object arg1) {  
        return 1;   //0:等しい。1:より大きい。-1:より小さい  
    }

java object sort

サポートサイト Wikidot.com javaobjectsort