Advertisement
nikeza

13.Serbian Unleashed

Oct 2nd, 2019
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.62 KB | None | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class map1_Exercises_Serbian_Unleashed {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.         String regex = "([A-Za-z A-Za-z ]+) (\\@)([A-Za-z A-Za-z 0-9]+) (\\d+) (\\d+)";
  12.  
  13.         String input = scanner.nextLine();
  14.  
  15.         Map<String, Map<String, Long>> concert = new LinkedHashMap<>();
  16.  
  17.         Pattern pattern = Pattern.compile(regex);
  18.  
  19.         while (!input.equals("End")) {
  20.  
  21.             Matcher matcher = pattern.matcher(input);
  22.  
  23.             while (matcher.find()) {
  24.  
  25.                 String singerName = matcher.group(1);
  26.                 String venues = matcher.group(3);
  27.                 long priceTicket = Long.parseLong(matcher.group(4));
  28.                 long countTicket = Long.parseLong(matcher.group(5));
  29.                 long tickets = priceTicket * countTicket;
  30.  
  31.                 concert.putIfAbsent(venues, new LinkedHashMap<>());
  32.                 concert.get(venues).putIfAbsent(singerName, (long) 0);
  33.                 concert.get(venues).put(singerName, concert.get(venues).get(singerName) + tickets);
  34.             }
  35.  
  36.             input = scanner.nextLine();
  37.         }
  38.  
  39.         for (Map.Entry<String, Map<String, Long>> entry : concert.entrySet()) {
  40.             System.out.println(entry.getKey());
  41.             entry.getValue().entrySet().stream()
  42.                     .sorted((f, s) -> s.getValue().compareTo(f.getValue()))
  43.                     .forEach(e -> System.out.printf("#  %s -> %d%n", e.getKey(), e.getValue()));
  44.         }
  45.  
  46.     }
  47.  
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement