Advertisement
Guest User

Untitled

a guest
Dec 29th, 2017
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. package dictLambdaStream_Exe.populationCounter_07;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Comparator;
  7. import java.util.HashMap;
  8. import java.util.LinkedHashMap;
  9. import java.util.Map;
  10. public class PopulationCounter {
  11.  
  12.     public static void main(String[] args) throws IOException {
  13.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  14.         Map<String, Long> countries = new LinkedHashMap<>();
  15.         Map<String, Map<String, Integer>> countriesCities = new HashMap<>();
  16.         String input = reader.readLine();
  17.         while (!input.equals("report")) {
  18.             String[] data = input.split("\\|");
  19.             String city = data[0];
  20.             String country = data[1];
  21.             int population = Integer.parseInt(data[2]);
  22.  
  23.             Long countryPop = countries.get(country);
  24.             if (countryPop == null) {
  25.                 countries.put(country, (long) population);
  26.                 Map<String, Integer> cityPop = new LinkedHashMap<>();
  27.                 cityPop.put(city, population);
  28.                 countriesCities.put(country, cityPop);
  29.             } else {
  30.                 countries.replace(country, countryPop + population);
  31.                 countriesCities.get(country).put(city, population);
  32.             }
  33.  
  34.             input = reader.readLine();
  35.         }
  36.         reader.close();
  37.  
  38.         StringBuilder output = new StringBuilder();
  39.         countries.entrySet()
  40.                 .stream()
  41.                 .sorted(reverseValueComparator())
  42.                 .forEach(p -> {
  43.                     output.append(String.format("%s (total population: %d)", p.getKey(), p.getValue())).append(System.lineSeparator());
  44.                     countriesCities.get(p.getKey()).entrySet()
  45.                             .stream()
  46.                             .sorted(reverseValueComparator())
  47.                             .forEach(cp ->
  48.                                     output.append(String.format("=>%s: %d", cp.getKey(), cp.getValue())).append(System.lineSeparator()));
  49.                 });
  50.         System.out.print(output);
  51.     }
  52.  
  53.     private static <T extends Comparable<T>> Comparator<Map.Entry<String, T>> reverseValueComparator() {
  54.         return (p1, p2) -> p2.getValue().compareTo(p1.getValue());
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement