我有这张 map :
Map<City, TreeSet<Individual>> cityIndividualMap = new HashMap<City, TreeSet<Individual>>();
我使用此函数填充此 map :
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 值仅采用一个元素!我已经在 Debug模式下执行了很多次,但不明白为什么只能添加一项。请您检查一下吗?
最佳答案
您不断用新列表覆盖每个城市的单独列表。变化:
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);
致:
TreeSet<Individual> individualList = cityIndividualMap.get(city);
if (individualList == null)
{
individualList = new TreeSet<Individual>( new FitnessComparator());
cityIndividualMap.put(city, individualList);
}
individualList.add(individual);
关于java - 无法填充以 TreeSet 作为参数的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977185/