gpt4 book ai didi

Java 自定义 ArrayList 对象排序

转载 作者:行者123 更新时间:2023-12-02 08:04:23 26 4
gpt4 key购买 nike

我在对自己的对象的 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);
}
}

我的主要类(class)是:

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

最佳答案

您确定在对列表进行排序时没有实例化新的 Robal 吗?这会导致随机值发生变化

关于Java 自定义 ArrayList 对象排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com