HashMap <string,class =“”>

时间:2017-01-15 00:51:31

标签: java hashmap

我有一个HashMap,我想打印所有键值和类的属性。 我的班级是:

class Country {
    String country;
    int population;

Country(String  country, int population) {
    this.country=country;
    this.population=population;
  }
}

我想创建hashMap,例如从2010年到2014年,Integer将成为年份,并且类国家将成为该年度的所有国家和人口,然后按年份打印HashMap并检索国家名称和人口

int year=1960;
HashMap<Integer,Country> country =new HashMap<Integer, Country>();
for (int j=0; j<10; j++)                                        
{
    String country=countrylist[j]);    
    int population=populationlist[j]);     
    Country P=new Country(country,population);      
    country.put(year, P);         

    year++;

}

for (Map.Entry p : country.entrySet()) {
    Country country=(Country)p.getValue();
    year=(Integer)p.getKey();
    nameCountry=country.country;
    population=country.population;
    println(year,namecountry,population);
}

1 个答案:

答案 0 :(得分:1)

我相信你的问题是你正在追寻一张多地图&#39;而不是地图&#39;。区别在于多地图&#39;允许您为每个键存储多个值。在您的情况下,您希望每年有多个国家/人口条目。

标准Java API中没有多映射实现。有许多第三方实施。搜索多地图,你会找到一堆。

通过将集合作为地图中的值,可以使用标准Java实现类似的功能。

在您的情况下,您可能需要考虑不同的数据结构。因为一个国家每年可能只有一个人口,所以更好的结构可能是:

aaaaa5

要存储新年的数据,您可以:

Map<Integer,Map<String,Integer>> populationData;

并在一年内存储一个国家的数据:

populationData.put(2017, new HashMap<>());