Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.LinkedHashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. import java.util.Scanner;
  7. import java.util.TreeMap;
  8.  
  9. public class Demo {
  10.     final static Scanner scanner = new Scanner(System.in);
  11.  
  12.     public static void main(String[] args) {
  13.         populationCounter();
  14.     }
  15.  
  16.     private static void populationCounter() {
  17.         Map<String, Map<String, Integer>> populationPerCountry = new LinkedHashMap<>();
  18.         while (true) {
  19.             List<String> userInput = Arrays.asList(scanner.nextLine().split("\\|"));
  20.             if (!userInput.contains("report")) {
  21.                 String country = "";
  22.                 String city = "";
  23.                 int population = 0;
  24.                 try {
  25.                     country = userInput.get(1);
  26.                     city = userInput.get(0);
  27.                     population = Integer.parseInt(userInput.get(2));
  28.                 } catch (Exception e) {
  29.                     continue;
  30.                 }
  31.                 if (!populationPerCountry.containsKey(country)) {
  32.                     Map<String, Integer> populationPerCity = new LinkedHashMap<>();
  33.                     populationPerCity.put(city, population);
  34.                     populationPerCountry.put(country, populationPerCity);
  35.                 } else {
  36.                     Map<String, Integer> populationPerCity = new LinkedHashMap<>();
  37.                     populationPerCity.putAll(populationPerCountry.get(country));
  38.                     populationPerCity.put(city, population);
  39.                     populationPerCountry.put(country, populationPerCity);
  40.                 }
  41.             } else {
  42.                 for (Entry<String, Map<String, Integer>> country : populationPerCountry.entrySet()) {
  43.                     int totalPopulation = populationPerCountry.get(country.getKey()).values().stream().mapToInt(Number::intValue).sum();
  44.                     System.out.printf("%s (total population: %d)%n",country.getKey(), totalPopulation);
  45.                     for (Entry<String, Integer> city : country.getValue().entrySet()) {
  46.                         System.out.printf("=>%s: %d%n",city.getKey(), city.getValue());
  47.                     }          
  48.                 }
  49.             }
  50.         }
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement