我有一个叫做“生物”的类和一组叫做“生物”的生物对象。类生物有一个称为距离的整数字段。我想根据阵列生物各自的距离字段对它们进行排序。我试过几种不同的方法,但没有走多远。有人能向我解释一下这是怎么回事吗?这样我就能弄清楚怎么做了?
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;
}
}
*/
}我有时会遇到静态错误,有时不会。我把可比的设置正确了吗?如果是的话,我该如何使用呢?我不在乎如何排序数组,但最简单的方法是很好的。顺便说一下,我使用的是处理。
到目前为止,我尝试使用了以下几个来源:
Making a generic comparator class
Java Sorting: sort an array of objects by property, object not allowed to use Comparable
How to sort an array of objects in Java?
谢谢!
发布于 2022-04-11 17:59:46
最简单的方法是使用比较器。假设您的getDistance类中有一个Creature方法
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 codehttps://stackoverflow.com/questions/71832167
复制相似问题