Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Scanner;
- import java.util.TreeMap;
- public class Demo {
- final static Scanner scanner = new Scanner(System.in);
- public static void main(String[] args) {
- populationCounter();
- }
- private static void populationCounter() {
- Map<String, Map<String, Integer>> populationPerCountry = new LinkedHashMap<>();
- while (true) {
- List<String> userInput = Arrays.asList(scanner.nextLine().split("\\|"));
- if (!userInput.contains("report")) {
- String country = "";
- String city = "";
- int population = 0;
- try {
- country = userInput.get(1);
- city = userInput.get(0);
- population = Integer.parseInt(userInput.get(2));
- } catch (Exception e) {
- continue;
- }
- if (!populationPerCountry.containsKey(country)) {
- Map<String, Integer> populationPerCity = new LinkedHashMap<>();
- populationPerCity.put(city, population);
- populationPerCountry.put(country, populationPerCity);
- } else {
- Map<String, Integer> populationPerCity = new LinkedHashMap<>();
- populationPerCity.putAll(populationPerCountry.get(country));
- populationPerCity.put(city, population);
- populationPerCountry.put(country, populationPerCity);
- }
- } else {
- for (Entry<String, Map<String, Integer>> country : populationPerCountry.entrySet()) {
- int totalPopulation = populationPerCountry.get(country.getKey()).values().stream().mapToInt(Number::intValue).sum();
- System.out.printf("%s (total population: %d)%n",country.getKey(), totalPopulation);
- for (Entry<String, Integer> city : country.getValue().entrySet()) {
- System.out.printf("=>%s: %d%n",city.getKey(), city.getValue());
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement