基于变量将对象数组排序到另一个数组中

时间:2017-01-14 18:44:55

标签: java arrays object

我在为学校作业写作的课程有问题。 基本上,在这段代码之前,我已经收到并处理了一堆信息,我将这些信息存储到一个对象数组中。现在我必须对这个数组进行排序(在排序后,我将按PRIORITY变量的顺序计算一些东西)。

假设我已经有一个名为input的MyClass []数组,它存储有限数量的MyClass对象。

MyClass[] priorityArray = new MyClass[input.length];
for (int i=0; i<priorityArray.length; i++) {
  int maxIndex = 0;
  int maxPrivilege = input[i].returnPrivilege();
  for (int j=1; j<input.legnth; j++) {
    int currentPrivilege = input[j].returnPrivilege();
    if (currentPrivilege > maxPrivilege) {
      maxPrivilege = currentPrivilege;
      maxIndex = j;
    }
  }
  priorityArray[i] = input[maxIndex];
  input[maxIndex].setPrivilege(-900000000);


}

MyClass类,如果没什么特别的,但当然包含一个正确的构造函数,getter和setter方法以及一个整数变量“privilege”。

我在程序的最终测试中遇到错误,并且当程序将权限返回为“-900000000”时,它必须与此部分代码有关。 它甚至没有将输入数组中的某些MyClass实例写入priorityArray数组。

我该怎样清理它?帮助

1 个答案:

答案 0 :(得分:1)

我完全重写了我的答案。

在这一行

priorityArray[i] = input[maxIndex];

您通过引用将对象从一个数组分配给另一个数组。这意味着只有一个对象,并在下一行中将值设置为-9000000。当然,priorityArray中的元素将具有相同的更改。要解决此问题,您需要在此处克隆您的对象。