私はProcessingを使用しています。どのようにオブジェクト自体のオブジェクトであるフィールドでカスタムオブジェクトのコレクションをソートしますか?
public void sortEnemies(final String field, List<Enemy> itemLocationList) {
Collections.sort(itemLocationList, new Comparator<Enemy>() {
@Override
public int compare(Enemy o1, Enemy o2) {
if (field.equals("r")) {
if (o1.r<o2.r)
{
return -1;
}
if (o1.r>o2.r)
{
return 1;
}
if (o1.r==o2.r)
{
return 0;
}
}
println("shoudl not have reached here.");
return 0;
}
}
);
}
は、そのような彼らの半径rなどのプリミティブフィールドで私が持っているこれらの敵をソートするためのコンパレータを使用するのに十分に簡単です。私がしたいのはこれです:それぞれの敵はlocというプリミティブフィールドloc.xとloc.yを持つlocというPVectorオブジェクトを持っています。オブジェクト内のPVectorオブジェクトでソートするには、このコードをどのように変更しますか?それは可能ですか?私はちょうど、例えば、彼らのxまたはy座標で並べ替えるのが好きですが、私は同様の方法でそれを書く方法がわかりません。
本質的には、問題は次のとおりです。オブジェクトの配列自体を並べ替えるフィールドを持つオブジェクトで並べ替える方法。
編集:私はここにも同様の問題 Sort ArrayList of custom Objects by property
があることがわかりますが、私は、処理は、Java 8(わからない)を使用しないと思いますので、ラムダ表記を使用する必要はありません。私はPVectorクラスを変更することはできません。私はPVectorオブジェクトのリストをソートする方法を作りましたが、それは敵のpvectorのリストを作成し、そのインデックスを取得し、それらのインデックスで敵をソートするという非常にラウンドアバウトな方法のようです。コメントフィードから
Java 8などを使用していますか? –
Processing 3.0に付属しているjavaのバージョンを使用しています。申し訳ありませんが、私はそれを見ていない – user3772547
実際には、javaと処理[同じものではありません](http://meta.stackoverflow.com/q/321127/472647) – CodeMouse92