按对象字段对对象数组进行排序.如何制作比较器?Java/处理



我有一个名为Creature的类和一组名为biologies的Creature对象。类"生物"有一个称为"距离"的整数字段。我想根据它们各自的距离场对阵列生物进行排序。我尝试了几种不同的方法,但都没有走多远。有人能向我解释一下这是如何工作的吗?这样我就可以想办法了?

Creature [] creatures;
int [] distancearray;                      //I made a seperate array to try and order the 
//creatures array based on this array
distancearray = new int [numcreatures];
for (int i = 0; i < numcreatures; i++) {
distancearray[i] = creatures[i].distance;
}
distancearray = sort(distancearray);      //sorting this array was easy but idk how to 
//sort creatures based on it
...
class Creature /*implements Comparable*/{//First attempt at Comparable
...
/*
int compareTo(Object otherObject){                //First try with Comparable
Creature otherCreature = (Creature)otherObject;
if (distance < otherCreature.distance) {
return -1;
}
if (distance > otherCreature.distance) {
return 1;
} else {
return 0;
}
}
int compare(Creature C2){                         //Second try with Comparable
if (distance < C2.distance) {
return -1;
}
if (distance > C2.distance) {
return 1;
} else {
return 0;
}
}
*/
}

我有时会遇到静态错误,有时不会。我是否正确设置了可比性?如果是,我该如何使用它?我不在乎如何对数组进行排序,但最简单的方法会很好。顺便说一下,我正在使用Processing。

以下是我迄今为止尝试使用的一些来源:

制作一个通用比较器类

Java排序:按属性对对象数组进行排序,对象不允许使用Comparable

如何在Java中对对象数组进行排序?

谢谢!

最简单的方法是使用比较器。假设您的Creature类中有一个getDistance方法

import java.util.Arrays;
import java.util.Comparator;
//may be more of your Processing code
Creature [] creatures = //your array;
void setup() {
//sort your array here or in whatever method you want
Arrays.sort(creatures, Comparator.comparingInt(Creature::getDistance));
}
class Creature {
// your class code
}
//may be more of your Processing code

最新更新