首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按objects字段对对象数组进行排序。如何制作比较器?Java/处理

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

Stack Overflow用户
提问于 2022-04-11 17:46:47
回答 1查看 197关注 0票数 2

我有一个叫做“生物”的类和一组叫做“生物”的生物对象。类生物有一个称为距离的整数字段。我想根据阵列生物各自的距离字段对它们进行排序。我试过几种不同的方法,但没有走多远。有人能向我解释一下这是怎么回事吗?这样我就能弄清楚怎么做了?

代码语言:javascript
复制
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?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-04-11 17:59:46

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71832167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档