Java自定义ArrayList对象排序
我对自己对象的Java自定义ArrayList对象排序,java,sorting,collections,arraylist,Java,Sorting,Collections,Arraylist,我对自己对象的ArrayList排序有问题 我的这些对象的类如下所示: public class Robal { int[] gen = new int[5]; int fit; Random losuj = new Random(); public Robal(int przelacz) { for (int i=0; i<5; i++ ) { gen[i]=losuj.nextInt(2); }
ArrayList
排序有问题
我的这些对象的类如下所示:
public class Robal {
int[] gen = new int[5];
int fit;
Random losuj = new Random();
public Robal(int przelacz) {
for (int i=0; i<5; i++ ) {
gen[i]=losuj.nextInt(2);
}
fit=dopasuj(gen, przelacz);
}
int dopasuj(int[] gen, int przelacz) {
int toDec=(gen[0]*1)+(gen[1]*2)+(gen[2]*4)+(gen[3]*8)+(gen[4]*16);
return y(toDec, przelacz);
}
int y(int toDec, int przelacz) {
if (przelacz == 1) {
return toDec*toDec;
} else if (przelacz == 2) {
return 1;
} else if(przelacz == 3) {
return 1;
} else if(przelacz == 4) {
return 1;
} else {
return 1;
}
}
void drukuj(int i) {
System.out.println("Geny Robala "+i+": "+gen[0]+" "+gen[1]+" "+gen[2]+" "+gen[3]+" "+gen[4]+"\tfit:"+fit);
}
}
您确定在对列表排序时没有实例化新Robal吗?这将导致随机值移位您将向数组中添加5项,并在排序前后仅打印4项。似乎未排序列表中的第5项进入了前4名。你能再打印一个项目,看看情况是否良好吗?你如何比较这些数据?哪些数据在讨论?数组中的对象是否已修改?否数据不会以任何方式修改…假设第二个四行是对前四行中显示的对象进行排序的结果,“适合”的值是按顺序排列的,与每个“适合”值关联的数字列表在前后都不会更改。那有什么问题?我觉得很好。您是如何从
1 0 1 0 1拟合:441
变为0 0 1 0拟合:64
的?确定发现问题。。。这里:虽然(i!=5){错误的数字…我有5个Robal实例。。。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class PE {
public static void main (String[] args){
ArrayList<Robal> Robale = new ArrayList<Robal>();
int i=0;
while(i!=5){
Robale.add(new Robal(1));
i++;
}
Robale.get(0).drukuj(1);
Robale.get(1).drukuj(2);
Robale.get(2).drukuj(3);
Robale.get(3).drukuj(4);
Collections.sort(Robale, new Comparator<Robal>() {
public int compare(Robal a, Robal b){
return a.fit - b.fit;
}
});
Robale.get(0).drukuj(1);
Robale.get(1).drukuj(2);
Robale.get(2).drukuj(3);
Robale.get(3).drukuj(4);
}
}
Geny Robala 1: 0 1 1 0 0 fit:36
Geny Robala 2: 1 0 1 0 1 fit:441
Geny Robala 3: 1 1 0 0 1 fit:361
Geny Robala 4: 0 1 1 1 0 fit:196
Geny Robala 1: 0 1 1 0 0 fit:36
Geny Robala 2: 0 0 0 1 0 fit:64
Geny Robala 3: 0 1 1 1 0 fit:196
Geny Robala 4: 1 1 0 0 1 fit:361