2017-01-15 5 views
-2

У меня есть HashMap, и я бы хотел напечатать все значения ключей и атрибуты классов. Мой класс:HashMap <String, Class>

class Country { 
    String country; 
    int population; 

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

Я хочу создать HashMap, где Integer будет год, например, с 2010 по 2014 год, и страна класс будет все страны и население за этот год, а затем распечатать, что 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

ok. в чем вопрос? есть ли определенная часть, где вы застряли? –

+0

Я получаю только последний класс, который я представил, поэтому последняя страна, когда я пытаюсь напечатать. –

+0

int year = 2010; Страна P = новая (countryName, Population); Country.put (год, P); –

ответ

1

Я считаю, что ваша проблема в том, что вы находитесь за «мульти-картой», а не с «картой». Различие заключается в том, что «мульти-карта» позволяет хранить несколько значений для каждого ключа. В вашем случае вы хотите, чтобы за каждый год были зарегистрированы несколько записей о стране/населении.

В стандартном Java API нет реализаций с несколькими картами. Существует ряд сторонних реализаций. Найдите мультимап, и вы найдете кучу.

Можно добиться аналогичной вещи, используя стандартную Java, имея коллекцию в качестве значения на карте.

В вашем случае вы можете рассмотреть другую структуру данных. Потому что страна может иметь только одно население каждый год, лучше структура может быть:

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

Для хранения данных на новый год, вы могли бы сделать:

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

А для хранения данных для страны в год:

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

спасибо, отличная помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^