我有一个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);
}
答案 0 :(得分:1)
我相信你的问题是你正在追寻一张多地图&#39;而不是地图&#39;。区别在于多地图&#39;允许您为每个键存储多个值。在您的情况下,您希望每年有多个国家/人口条目。
标准Java API中没有多映射实现。有许多第三方实施。搜索多地图,你会找到一堆。
通过将集合作为地图中的值,可以使用标准Java实现类似的功能。
在您的情况下,您可能需要考虑不同的数据结构。因为一个国家每年可能只有一个人口,所以更好的结构可能是:
aaaaa5
要存储新年的数据,您可以:
Map<Integer,Map<String,Integer>> populationData;
并在一年内存储一个国家的数据:
populationData.put(2017, new HashMap<>());