2017-01-15 2 views
-2

Ich habe eine HashMap und ich möchte alle Schlüsselwerte und die Attribute der Klassen drucken. Meine Klasse ist:HashMap <String, Klasse>

class Country { 
    String country; 
    int population; 

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

ich Hashmap erstellen möchten, wo Integer wird das Jahr zum Beispiel 2010 bis 2014, und die Klasse Land alle für dieses Jahr die Länder und Bevölkerung sein wird, und drucken später, dass HashMap, nach Jahr und retreiving den Namen und die Bevölkerung des Landes.

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

ok. was ist die Frage? Gibt es einen bestimmten Teil, wo du stecken geblieben bist? –

+0

Ich bekomme nur die letzte Klasse, die ich eingeführt habe, also das letzte Land, wenn ich versuche zu drucken. –

+0

int Jahr = 2010; Land P = neu (countryName, Population); Land.put (Jahr, P); –

Antwort

1

Ich glaube, Ihr Problem ist, dass Sie nach einer "Multi-Map" statt einer "Karte" sind. Der Unterschied besteht darin, dass Sie mit einer Mehrfachkarte mehrere Werte für jeden Schlüssel speichern können. In Ihrem Fall möchten Sie mehrere Länder-/Bevölkerungseinträge für jedes Jahr.

In der Standard-Java-API gibt es keine Multi-Map-Implementierungen. Es gibt eine Reihe von Implementierungen von Drittanbietern. Suchen Sie nach Multimap und Sie werden einen Haufen finden.

Es ist möglich, eine ähnliche Sache mit Standard-Java zu erreichen, indem Sie eine Sammlung als Wert in der Karte haben.

In Ihrem Fall möchten Sie vielleicht eine andere Datenstruktur betrachten. Da ein Land nur eine Bevölkerung jedes Jahr hat, eine bessere Struktur sein könnte:

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

Daten speichern für ein neues Jahr, würden Sie tun:

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

und Daten zu speichern, für ein Land in einem Jahr:

populationData.get(2017).put("Botswana", 45982637); 
+0

danke, große Hilfe –

Verwandte Themen