Ich verwende Verarbeitung.Wie sortieren Sie eine Sammlung eines benutzerdefinierten Objekts durch ein Feld, das selbst ein Objekt ist Java
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;
}
}
);
}
Es ist einfach genug, um einen Komparator zu verwenden, um diese Feinde zu sortieren i von einem primitiven Feld wie ihr Radius r haben. Was ich tun möchte, ist folgendes: Jeder Gegner hat ein PVector-Objekt namens loc innerhalb von ihm, das primitive Felder loc.x und loc.y hat. Wie würde ich diesen Code ändern, um nach dem PVector-Objekt im Objekt zu sortieren? Ist das möglich? Ich möchte zum Beispiel nur nach ihrer X- oder Y-Koordinate sortieren, aber ich bin mir nicht sicher, wie ich es auf ähnliche Weise schreiben soll.
Im Wesentlichen ist die Frage: Wie sortiere ich ein Array von Objekten durch ein Feld, das selbst ein Objekt ist, das das Feld hat, nach dem ich sortieren möchte.
edit: ich sehe, dass es hier ein ähnliches Problem Sort ArrayList of custom Objects by property
ist, aber ich will nicht Lambda-Notation verwenden, da ich Verarbeitung verwendet 8 Java nicht denken (nicht sicher). Ich kann die PVector-Klasse nicht ändern. Ich habe einen Weg gefunden, eine Liste von PVector-Objekten zu sortieren, aber es scheint, als wäre es eine sehr umständliche Art, eine Liste der Feinde zu erstellen, die Indizes zu erhalten und dann die Feinde mit diesen Indizes zu sortieren.
Verwenden Sie Java 8 oder etwas niedriger? –
Ich benutze jede Version von Java, die mit Processing 3.0 kommt. Tut mir leid, ich habe nicht in diese – user3772547
untersucht Eigentlich, Java und Verarbeitung [sind nicht die gleiche Sache.] (Http://meta.stackoverflow.com/q/321127/472647) – CodeMouse92