私はこの地図を持っています:
Map<City, TreeSet<Individual>> cityIndividualMap = new HashMap<City, TreeSet<Individual>>();
この関数を使用して、このマップにデータを入力します。
public void add(List<Individual> individuals){
for (Individual individual : individuals){
individualSortedSet.add(individual);
for(City city:individual.getCities()){
TreeSet<Individual> individualList;
if (cityIndividualMap.containsKey(city))
individualSet = cityIndividualMap.get(city);
else
individualSet = new TreeSet<Individual>( new FitnessComparator());
individualSet.add(individual);
cityIndividualMap.put(city, individualSet);
}
}
}
これは私のコンパレータです:
public class FitnessComparator implements Comparator<Individual> {
@Override
public int compare(Individual individual1, Individual individual2) {
if (individual1.getFitness() == individual2.getFitness())
return 0;
return (individual1.getFitness() > individual2.getFitness())? 1 : -1;
}
}
個々のクラスは単なるデータ クラスなので、ここではコピーしません。
非常に奇妙な理由により、CityIndividualMaps 値は 1 つの要素しか取りません! これをデバッグモードで何度も実行しましたが、項目が 1 つしか追加できない理由がわかりません。確認していただけますか?