我正在使用遗传算法,我希望它尽可能抽象以重用遗传算法。我定义并实现了一个人口接口,它的工作原理很好,但我相信这不是最好的方法。我对Java泛型没有很好的经验。有没有确定和实施人口界面更简单的方法(如可能避免铸造转换避免getChromosomes一个新的列表()?)如何以更简单的方式定义/实现此泛型接口?
public interface Population
{
void addChromosomes(List<? extends Chromosome> chromosomes);
List<Chromosome> getChromosomes();
// More code here ...
}
public class TSPPopulation implements Population
{
private List<TSPChromosome> chromosomes;
@Override
public void addChromosomes(List<? extends Chromosome> chromosomes) {
for (Chromosome chromosome : chromosomes) {
this.chromosomes.add((TSPChromosome) chromosome);
}
}
@Override
public List<Chromosome> getChromosomes() {
List<Chromosome> newList = new ArrayList<Chromosome>();
for (TSPChromosome chromosome : chromosomes) {
newList.add(chromosome);
}
return newList;
}
}
好老AI,我记得几年前写了一个类似于这个的代码。 – 2010-11-29 14:05:27