Advertisement
Guest User

Unleashed 2

a guest
May 27th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.06 KB | None | 0 0
  1. package MapLambdaStream;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.*;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;
  9.  
  10. public class P10_Unleashed {
  11.     public static void main(String[] args) throws IOException {
  12.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  13.  
  14.         Pattern pat = Pattern.compile("^(?<singer>[a-zA-Z][a-zA-Z ]+)\\s@(?<venue>[a-zA-Z][a-zA-Z ]+)\\s(?<ticketPrice>\\d+)\\s(?<ticketCount>\\d+)$");
  15.         Map<String,Map<String,Long>> datas = new LinkedHashMap<>();
  16.  
  17.         String line = "";
  18.  
  19.         while (!"END".equalsIgnoreCase(line = reader.readLine())) {
  20.  
  21.             Matcher matcher = pat.matcher(line);
  22.  
  23.             if (matcher.find()) {
  24.                 String vanue = matcher.group("venue");
  25.                 String singer = matcher.group("singer");
  26.                 Long ticketPrice = Long.parseLong(matcher.group("ticketPrice"));
  27.                 Long ticketCount = Long.parseLong(matcher.group("ticketCount"));
  28.  
  29.  
  30.                 // Short version  datas.putIfAbsent(vanue,new HashMap<>()); It will put the key only if it`s not exist
  31.                 if (!datas.containsKey(vanue)) {
  32.                     datas.put(vanue, new LinkedHashMap<>());
  33.                 }
  34.  
  35.                 // datas.get(vanue).putIfAbsent(singer,0L);
  36.                 if (!datas.get(vanue).containsKey(singer)) {
  37.                     datas.get(vanue).put(singer, 0L);
  38.                 }
  39.  
  40.                 Long sum = datas.get(vanue).get(singer) + ticketCount * ticketPrice;
  41.  
  42.                 datas.get(vanue).put(singer,sum);
  43.             }
  44.         }
  45.  
  46.        datas.forEach((key, value) -> {
  47.            System.out.println(key);
  48.            value.entrySet()
  49.                    .stream()
  50.                    .sorted((s1,s2) -> Long.compare(s2.getValue(),s1.getValue()))
  51.                    .forEach(ordered -> {
  52.                        System.out.printf("#  %s -> %d%n",ordered.getKey(),ordered.getValue());
  53.                    });
  54.  
  55.        });
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement