Advertisement
mark79

Java Advanced - SerbianUnleashed

Sep 30th, 2019
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.69 KB | None | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Scanner;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5.  
  6. public class SerbianUnleashed_v2 {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         LinkedHashMap<String, LinkedHashMap<String, Integer>> concerts = new LinkedHashMap<>();
  11.         String regex = "^(?<singer>[\\w\\s]+)\\s@(?<venue>[\\w\\s]+)\\s(?<ticketPrice>\\d+)\\s(?<ticketCount>\\d+)$";
  12.         String input = scanner.nextLine();
  13.         while (!input.equals("End")) {
  14.  
  15.             Pattern pattern = Pattern.compile(regex);
  16.             Matcher matcher = pattern.matcher(input);
  17.             if (matcher.find()) {
  18.                 String place = matcher.group("venue");
  19.                 String singer = matcher.group("singer");
  20.                 int ticketPrice = Integer.parseInt(matcher.group("ticketPrice"));
  21.                 int ticketCount = Integer.parseInt(matcher.group("ticketCount"));
  22.                 int ticketSum = ticketCount * ticketPrice;
  23.                 concerts.putIfAbsent(place, new LinkedHashMap<>());
  24.                 concerts.get(place).putIfAbsent(singer, 0);
  25.                 concerts.get(place).put(singer, concerts.get(place).get(singer) + ticketSum);
  26.             }
  27.             input = scanner.nextLine();
  28.         }
  29.  
  30.         concerts.forEach((key, value) -> {
  31.             System.out.printf("%s%n", key);
  32.             value.entrySet()
  33.                     .stream()
  34.                     .sorted((f, s) -> s.getValue().compareTo(f.getValue()))
  35.                     .forEach(entry -> System.out.printf("#  %s -> %d%n", entry.getKey(), entry.getValue())
  36.                     );
  37.         });
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement